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 .