GNU/Linux >> Tutoriales Linux >  >> Linux

/dev/null en Linux

/dev/null en Linux es un archivo de dispositivo nulo. Esto descartará cualquier cosa escrita en él y devolverá EOF sobre la lectura.

Este es un truco de línea de comandos que actúa como una aspiradora, que absorbe todo lo que se le arroja.

Echemos un vistazo para comprender lo que significa y lo que podemos hacer con este archivo.

Propiedades de /dev/null

Esto devolverá un Fin de archivo (EOF ) carácter si intenta leerlo usando el comando cat.

cat /dev/null

Este es un archivo válido, que se puede verificar usando

stat /dev/null

Esto me da una salida de

  File: /dev/null
  Size: 0               Blocks: 0          IO Block: 4096   character special file
Device: 6h/6d   Inode: 5           Links: 1     Device type: 1,3
Access: (0666/crw-rw-rw-)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-02-04 13:00:43.112464814 +0530
Modify: 2020-02-04 13:00:43.112464814 +0530
Change: 2020-02-04 13:00:43.112464814 +0530

Esto muestra que este archivo tiene un tamaño de 0 bytes, tiene cero bloques asignados. Los permisos del archivo también están configurados para que cualquiera pueda leerlo o escribirlo, pero no puede ejecutarlo.

Dado que no es un archivo ejecutable, no podemos usar tuberías usando | operador para redirigir a /dev/null . La única forma es usar redirecciones de archivos (> , >> o < , < ).

El siguiente diagrama muestra que /dev/null es de hecho un archivo válido.

Ahora echemos un vistazo a algunos casos de uso comunes para /dev/null .

Redireccionamiento a /dev/null en Linux

Podemos descartar cualquier resultado de un script que usemos al redirigir a /dev/null .

Por ejemplo, podemos intentar descartar echo mensajes usando este truco.

echo 'Hello from JournalDev' > /dev/null

¡No obtendrá ningún resultado ya que se descarta!

Intentemos ejecutar un comando incorrectamente y canalizar su salida a /dev/null .

cat --INCORRECT_OPTION > /dev/null

Todavía obtenemos una salida como esta:

cat: unrecognized option '--INCORRECT'
Try 'cat --help' for more information.

¿Por qué está pasando esto? Esto se debe a que los mensajes de error provienen de stderr , pero solo estamos descartando la salida de stdout .

Necesitamos tomar stderr en cuenta también.

Descartar mensajes de error

Redirijamos el stderr a /dev/null , junto con la salida estándar. Podemos usar el descriptor de archivo para stderr(=2 ) por esto.

cat --INCORRECT_OPTION > /dev/null 2>/dev/null

¡Esto nos dará lo que necesitamos!

Hay otra forma de hacer lo mismo; al redirigir stderr a stdout primero y luego redirigir stdout a /dev/null .

La sintaxis para esto será:

command > /dev/null 2>&1

Observe el 2>&1 al final. Redireccionamos stderr(2 ) a la salida estándar (1 ). Usamos &1 mencionar al shell que el archivo de destino es un descriptor de archivo y no un nombre de archivo.

cat --INCORRECT_OPTION > dev/null 2>&1

Entonces, si usamos 2>1 , solo redireccionaremos stderr a un archivo llamado 1 . ¡Esto no es lo que queremos!

Conclusión

Con suerte, esto aclarará un poco las cosas, para que ahora pueda usar /dev/null en Linux, sabiendo lo que significa! No dude en hacer preguntas en la sección de comentarios a continuación.

Referencias

  • Pregunta de desbordamiento de pila

Linux
  1. Cómo generar una contraseña aleatoria en Linux usando /dev/random

  2. ¿Qué tan portátiles son /dev/stdin, /dev/stdout y /dev/stderr?

  3. ¿Cuándo usar /dev/random Vs /dev/urandom?

  4. ¿Qué son los archivos /dev/zero y /dev/null en Linux?

  5. ¿Está mal vincular /dev/random a /dev/urandom en Linux?

tty (/dev/tty) vs pts (/dev/pts) en Linux

¿Qué es '/dev/null 2&1' en Linux?

Cómo redirigir la salida a /dev/null en Linux

¿Qué es /dev/null en Linux?

Cómo usa Linux /dev/tty y /dev/tty0

hacer eco o imprimir /dev/stdin /dev/stdout /dev/stderr