Dispositivo nulo - '/dev/null'
Todos los sistemas basados en Linux tienen una característica llamada dispositivos virtuales. Estos dispositivos virtuales interactúan como archivos reales en el sistema operativo. El funcionamiento de tales dispositivos virtuales es similar a los dispositivos reales; se usan para escribir y leer datos. La principal diferencia entre los dos es que los datos para los dispositivos virtuales son suministrados por el sistema operativo.
/dev/null es un dispositivo nulo, un tipo especial de dispositivo virtual. Está presente en cada sistema de Linux, y el propósito de este dispositivo es descartar cualquier cosa que se le envíe y leer el final del archivo (EOF). La mayoría de los dispositivos virtuales se utilizan para leer datos; Sin embargo, /dev /null es único, ya que se utiliza para suprimir cualquier dato escrito. En palabras simples, actúa como un agujero negro para cualquier dato que se le escriba en los sistemas operativos de Linux.
Ahora, echemos un vistazo a las partes restantes del comando 2> /dev /null
Descriptor de archivo - '2'
Cada ejecución de comandos en Linux genera tres archivos asociados: entrada estándar, salida estándar y archivos de error estándar. El sistema operativo Linux se refiere a cada uno de estos archivos con un entero no negativo único.
Los términos técnicos para la entrada estándar, la salida estándar y las secuencias de error estándar son Stdin, STDOUT y STDERR, respectivamente.
Sabemos que el número '2' en el comando '2>/dev/null' se refiere a la transmisión de error estándar (stderr).
Operador de redirección de archivos - '>'
El símbolo '>' se conoce como operador de redirección de archivos. Su propósito es dirigir lo que a su izquierda a los comandos en el lado derecho. En palabras más simples, cualquier cadena de datos a la izquierda se dirigirá al lado derecho del operador.
Hasta ahora, hemos entendido el propósito detrás de cada componente del comando 2>/dev/null. Envía el flujo de error a /dev /null, que lo descarta. En otras palabras, este comando se usa para descartar y suprimir las salidas de error. Sin embargo, si es un veterano experimentado de Linux, puede ver el contenido del archivo /dev /null ejecutando el siguiente comando en el terminal:
$ ls -l /dev /null
Este comando se usa típicamente en escenarios en los que necesitamos filtrar la salida en función de los errores o cuando queremos descartar cualquier salida asociada con descripciones erróneas. En el futuro, veremos ejemplos de su uso en un sistema Ubuntu.
Usando 2>/dev/null
Dado que sabemos que el comando 2>/dev/null se usa para descartar errores, siempre se usará junto con otros comandos. Veremos un enfoque similar en los siguientes ejemplos. Puede abrir el terminal, ya sea accediendo a través del menú Aplicaciones o utilizando el atajo de teclado Ctrl + Alt + T.
En el primer ejemplo, realizaremos una búsqueda en el directorio / sys / para una cadena aleatoria (Helloworld en este caso). El comando para buscar es GREP, y su argumento será la cadena de búsqueda. Ingrese el siguiente comando para buscar su cadena.
$ GREP -R HELLOWORLD /SYS /
Este comando de búsqueda está obligado a mostrar numerosos errores ya que se está utilizando sin acceso raíz. Enviaremos su secuencia de error a/dev/null usando el comando 2>/dev/null para descartar estos errores.
$ GREP -R HELLOWORLD /SYS /2> /DEV /NULL
Podemos ver que la salida del comando es mucho más ordenada y más simple que la última. La razón es que los errores se están descartando usando 2> /dev /null, y dado que el comando GREP no pudo encontrar ningún archivo que coincida con nuestra cadena 'helloworld', no muestra ninguna salida.
Para comprender mejor el uso de /dev /null, veremos el siguiente ejemplo de hacer ping a cualquier sitio web (Google.com en nuestro caso). Puedes hacer ping google.com ejecutando el siguiente comando:
$ ping google.comunicarse
Si deseamos excluir todos los pings fallidos, podemos usar el comando 2>/dev/null:
$ ping google.com 2> /dev /null
En este caso, el flujo de error estándar (que muestra los pings fallidos a Google.com) se envía al dispositivo virtual /dev /nulo que los descarta.
Sin embargo, si deseamos ver solo los pings fallidos, podemos ejecutar el siguiente comando:
$ ping google.com 1> /dev /null
Aquí, enviamos la transmisión de salida estándar (stDout) al dispositivo /dev /null que la descarga. En consecuencia, solo nos quedan los pings que no lograron llegar a Google.servidor. Sin embargo, en nuestro caso, no hubo pings fallidos. También podemos dirigir Stdout y Stderr a diferentes ubicaciones. Esto es útil si queremos descartar la salida y almacenar errores en un registro o viceversa. Puede ejecutar el siguiente comando para almacenar los pings fallidos en un registro de errores mientras descarta la salida estándar del comando ping:
$ ping google.com 1> /dev /null 2> error.registro
En ocasiones, es posible que desee suprimir toda la salida de un comando (incluida la salida estándar y los errores estándar). Podemos lograr esto utilizando el dispositivo /dev /nulo de una manera ligeramente diferente. Puede escribir el siguiente comando para suprimir toda la salida:
$ ping google.com>/dev/null 2> y 1
Tenga en cuenta que el orden de los comandos aquí es muy importante. Después de ejecutar el comando ping, '>/dev/null' le dice al sistema que suprima la salida, y '2> & 1' dirige el flujo de error estándar a la salida estándar. De esta manera, se descarta toda la salida del comando.
Conclusión
Hemos diseccionado el comando 2>/dev/nulo y ejemplos simples en este artículo, y con suerte, ahora entiendes lo que hace cada parte. Sin embargo, esto es solo la punta del iceberg; Los dispositivos nulos se utilizan de una multitud de maneras en la programación de bash. Algunos de los usos más avanzados incluyen verificar la existencia del archivo, automatizar las instalaciones de los paquetes y evitar que los scripts se ejecuten en excepciones no deseadas.