GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué se redirige Stderr a /dev/null de esta manera?

Esto no tiene sentido para mí.

wibble > /dev/null 2>&1

Creo que tendría más sentido si fuera algo como esto:

wibble 2>&1 > /dev/null

En otras palabras

Commands Output Sendall STDERRORS to STDOUT then SEND it all to /dev/null

¿Cuál es el pensamiento detrás de la orden de la redirección de comando xxx > /dev/null 2>1 ?

Respuesta aceptada:

Las redirecciones se procesan de izquierda a derecha. Si lo haces

2>&1 1> /dev/null

La primera redirección hace stderr apunta a la transmisión que stdout apunta a en ese momento (que es esencialmente su tty). No hace stderr un alias de stdout .

Entonces stdout se redirige al cubo de bits. El stdout la redirección no afecta al stderr anterior redirigir stderr todavía se refiere a su tty.

Entonces:

ls file_that_doesnt_exist 2>&1 1> /dev/null

imprimirá solo el mensaje de error en su terminal.

El bash la página de documentación de redirección menciona esto explícitamente:

Tenga en cuenta que el orden de las redirecciones es significativo. Por ejemplo, el comando

          ls > dirlist 2>&1

dirige tanto la salida estándar como el error estándar a la lista de archivos, mientras que el comando

          ls 2>&1 > dirlist

dirige solo la salida estándar al archivo dirlist, porque el error estándar se duplicó desde la salida estándar antes de que la salida estándar se redirigiese a dirlist .


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

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

  3. Cómo silenciar completamente un cronjob a /dev/null/?

  4. Shell:redirigir stdout a /dev/null y stderr a stdout

  5. pantalla No se puede abrir su terminal '/dev/pts/0' - verifique

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

Linux:¿Diferencia entre /dev/console, /dev/tty y /dev/tty0?

/dev/null en Linux

¿Qué son los archivos /dev/zero y /dev/null en Linux?

¿Cómo codificar en base64 /dev/random o /dev/urandom?

Crear un dispositivo de bloque virtual que escriba en /dev/null