¿Qué es /dev /null y cómo usarlo?

¿Qué es /dev /null y cómo usarlo?
Linux es un sistema operativo interesante que aloja algunos dispositivos virtuales para numerosos fines. En lo que respecta a los programas que se ejecutan en el sistema, estos dispositivos virtuales actúan como si fueran archivos reales. Las herramientas pueden solicitar y alimentar datos de estas fuentes. Los datos son generados por el sistema operativo en lugar de leerlos desde un disco.

Un ejemplo de ello es /dev /null. Es un archivo especial que está presente en cada sistema de Linux. Sin embargo, a diferencia de la mayoría de los otros archivos virtuales, en lugar de leer, se usa para escribir. Lo que sea que escriba /dev /null se descartará, olvidado en el vacío. Se conoce como el dispositivo NULL en un sistema UNIX.

¿Por qué querrías descartar algo en el vacío?? Veamos qué es /dev /null y su uso.

Requisitos previos

Antes de sumergirnos profundamente en el uso de /dev /null, tenemos que tener una clara comprensión del stdout y stderr flujo de datos. Mira esta guía en profundidad en stdin, stderr, y stdout.

Tengamos una actualización rápida. Siempre que se ejecute cualquier utilidad de línea de comandos, genera dos salidas. La salida va a stdout y el error (si se genera) va a stderr. Por defecto, ambos flujos de datos están asociados con el terminal.

Por ejemplo, el siguiente comando imprimirá la cadena dentro de la cita doble. Aquí, la salida se almacena en stdout.

$ Echo "Hello World"

El siguiente comando nos mostrará el estado de salida del comando previamente realizado.

$ Echo $?

Como el comando anterior se ejecutó con éxito, el estado de salida es 0. De lo contrario, el estado de salida será diferente. ¿Qué sucede cuando intentas ejecutar un comando inválido??

$ ADFADSF
$ Echo $?

Ahora necesitamos saber sobre el descriptor de archivo. En el ecosistema UNIX, estos son valores enteros asignados a un archivo. Ambos stdout (Descriptor de archivo = 1) y stderr (Descriptor de archivo = 2) tener un descriptor de archivo específico. Usando el descriptor del archivo (1 y 2 en esta situación), podemos redirigir el stdout y stderr a otros archivos.

Para empezar, el siguiente ejemplo redirigirá el stdout del comando echo a un archivo de texto. Aquí, no especificamos el descriptor del archivo. Si no se especifica, Bash usará stdout por defecto.

$ Echo "Hello World"> Log.TXT

El siguiente comando redirigirá el stderr a un archivo de texto.

$ asdfadsa 2> error.TXT

Usando /dev /null

Redirigir la salida a /dev /null

Ahora estamos listos para aprender a usar /dev /null. Primero, verifiquemos cómo filtrar la salida y el error normales. En el siguiente comando, Grep intentará buscar una cadena (hola, en este caso) en el directorio "/sys".

$ grep -r hola /sys /

Sin embargo, generará muchos errores como sin privilegios raíz, Grep no puede acceder a varios archivos. En tal caso, dará como resultado errores de "permiso denegado". Ahora, usando la redirección, podemos obtener una salida más clara.

$ GREP -R Hello /Sys /2> /Dev /Null

La salida se ve mucho mejor, correcta? Nada! En este caso, Grep no tiene acceso a muchos archivos y los que son accesibles no tienen la cadena "Hola".

En el siguiente ejemplo, estaremos haciendo ping a Google.

$ ping google.comunicarse

Sin embargo, no queremos ver todos esos resultados exitosos de ping. En cambio, solo queremos centrarnos en los errores cuando Ping no pudo llegar a Google. Como hacemos eso?

$ ping google.com 1> /dev /null

Aquí, el contenido de stdout se arrojan a /dev /nulo, dejando solo los errores.

Redirigir toda la salida a /dev /null

En ciertas situaciones, la salida puede no ser útil en absoluto. Usando la redirección, podemos descargar toda la salida al vacío.

$ Grep -r Hello /Sys /> /Dev /Null 2> y 1

Rompamos este comando un poco. Primero, estamos arrojando todo el stdout a /dev /null. Luego, en la segunda parte, le estamos diciendo a Bash que envíe stderr a stdout. En este ejemplo, no hay nada que obtener. Sin embargo, si está confundido, siempre puede verificar si el comando se ejecuta con éxito.

$ Echo $?

El valor es 2 porque el comando generó muchos errores.

Si tiende a olvidar el descriptor de archivo de stdout y stderr, El siguiente comando funcionará bien. Es un formato más generalizado del comando anterior. Ambos stdout y stderr será redirigido a /dev /null.

$ grep -r hello /sys /&> /dev /null

Otros ejemplos

Este es uno interesante. Recuerda la herramienta DD? Es una herramienta poderosa para convertir y copiar archivos. Obtenga más información sobre DD. Usando DD, podemos probar la velocidad de lectura secuencial de su disco. Por supuesto, no es una medición precisa. Sin embargo, para una prueba rápida, es bastante útil.

$ dd if = de =/dev/null status = progreso bs = 1m iflag = directo

Aquí he usado el Ubuntu 18.04.4 ISO como el archivo grande.

Del mismo modo, también puede probar la velocidad de descarga de su conexión a Internet.

$ wget -o /dev /null

Pensamientos finales

Con suerte, tiene una comprensión clara de lo que es este archivo /dev /null. Es un dispositivo especial que, si se le escribe, descarta y si se lee, lee NULL. El verdadero potencial de esta característica interesante está en interesantes guiones de Bash.

¿Estás interesado en Bash Scripting?? Echa un vistazo a la Guía de principiantes para Bash Scripting.

Disfrutar!