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 .