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!