El archivo /dev/null

El archivo /dev/null es una caja negra que no contiene ni hace nada. Por ejemplo, la instrucción

$ cat /dev/null

No produce salida o mensaje alguno.
Más bien es utilizado para recibir archivos basura (descartables), o para vaciar archivos mediante redirección:

 ls > /dev/null

Manda la lista de archivos de ls a el archivo /dev/null, con lo cual dicha lista desaparece.

cat /dev/null  > Archivo.Awk

Borra el contenido de Archivo.Awk y lo deja vacío.
No es posible copiar o mover archivos al directorio /dev/null. Un intento por hacerlo produce el siguiente resultado:

[hernandez@localhost Programas]$ mv Archivo.awk /dev/null
mv: ¿sobreescribir «/dev/null»? (s/n) s
mv: falló el movimiento entre distintos dispositivos: de «Archivo.awk» a 
«/dev/null»;
no se puede borrar el objetivo: Permiso denegado

Así visto, puede parecer que su utilidad no es tanta, ya que, después de todo, podemos hacer esas tareas de otra manera. Sin embargo, quienes escriben shell scripts, pueden encontrar una utilidad distinta al archivo /dev/nulll.
Cuando la tarea que hemos intentado no pudo ser hecha, recibimos un mensaje de error. Por ejemplo, si escribimos

$ cat /proc/

en donde intentamos ver el contenido de proc, suponiendo erróneamente que es un archivo, obtenemos un mensaje que dice:

cat: /proc/: Es un directorio

Desde luego, no podemos ver el contenido de un directorio con el comando cat
Cuando escribimos un script, no queremos esos mensajes en la pantalla. ¿Qué se puede hacer?
Escribir la instrucción anterior así

$ cat /proc/ 2>/dev/null

La instrucción incluye un 2, el cual es una abreviación de STDERR (STDIN, STDOUT y STDERR se pueden abreviar con 0, 1 y 2 respectivamente) En caso de ocurrir un error, la salida se dirije al archivo /dev/null, con lo cual desaparece.
Desde luego, podemos hacer uso de un archivo distinto a /dev/null, y redirigir ahí la salida, pero tendríamos que borrar luego dicho archivo. /dev/null es un dispositivo virtual que está pensado para esas tareas.

Deja un comentario