GNU/Linux >> Tutoriales Linux >  >> Linux

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

/dev/null es un archivo de pseudodispositivo en Linux, que se usa para descartar la salida proveniente de los programas, especialmente los que se ejecutan en la línea de comandos. Este archivo se comporta como un sumidero, es decir, un archivo de destino que se puede escribir; sin embargo, tan pronto como se escribe cualquier flujo de datos en este archivo, se elimina inmediatamente.

Esto es útil para deshacerse de la salida que el usuario no necesita. Los programas y procesos pueden generar registros de salida de gran longitud y, en ocasiones, resulta complicado analizar el registro.

Por ejemplo, a veces un programa arroja dos errores, pero los registros de errores se pierden en algún lugar entre cientos de registros de mensajes de información. En tal caso, podemos volcar los registros de mensajes de información a /dev/null .

En el ejemplo anterior, la salida de error de un programa se llama STDERR (Error estándar ) en Linux y está representado por el número entero ‘2’ , mientras que la salida de éxito e información se llama STDOUT (Salida estándar ), y está representado por el número entero '1' .

Ahora, es posible que haya visto la siguiente declaración de la línea de comandos muy a menudo, que descarta tanto STDERR y STDOUT a /dev/null .

$ command_name > /dev/null 2>&1

Tratemos de entender lo que esto significa.

El operador '>' se llama operador de redirección. Redirige la salida al archivo especificado después, que en este caso es /dev/null , en lugar de imprimirlo en la terminal.

¿Significa esto TODOS la salida del comando se redirige a /dev/null con el '>' ¿operador? No. Cuando se usa como se muestra arriba, el operador solo redirige el STDOUT .

Por lo tanto, tenemos la última parte del comando. '2>&1' significa:redirigir STDERR (2) a STDOUT (1) . La razón por la que tenemos que especificar ‘&1’ y no simplemente '1' es que simplemente escribir ‘1’ redirigirá la salida a un archivo de texto con el nombre '1' . Con el ampersand (&) el sistema reconoce que el 1 no es un nombre de archivo, sino el descriptor de archivo STDOUT .

Por lo tanto, redirigimos STDOUT a /dev/null y STDERR a STDOUT y de tal manera, la salida completa del programa(s) es descartada en /dev/null .

Por ejemplo, ejecutar el comando mv con y sin ‘>/dev/null 2>&1’ .

Sin redirección:

$ mv tmp.txt test/tmp2.txt /tmp

Con redirección de STDOUT:

$ mv tmp.txt test/tmp2.txt /tmp > /dev/null

Con redirección de STDOUT y STDERR:

$ mv tmp.txt test/tmp2.txt /tmp > /dev/null 2>&1
Conclusión

En este artículo, tratamos de entender cuál es el significado de la frase de comando de uso popular en Linux:'> /dev/null 2>&1' . Si desea obtener información sobre '/dev/null ' con más profundidad, puedes hacerlo aquí.

Si tiene alguna pregunta o comentario, ¡háganoslo saber en los comentarios a continuación!


Linux
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

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

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

  4. Linux:¿Qué significa la letra 'u' en /dev/urandom?

  5. Linux – ¿Cómo crear /dev/null?

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

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

¿Qué es /dev/null en Linux?

/dev/null en Linux

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

Salida ls -l en el directorio /dev del sistema Unix/Linux