Esto no tiene sentido para mi.
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 del orden de la redirección de comandos xxx > /dev/null 2>1
?
io-redirection
quién soy
fuente
fuente
2>&1
alguna manera "une" o "une" o "se casa" con los dos DF, de modo que cualquier cambio [posterior] en uno de ellos se convierte en un cambio en el otro. Este no es el caso. ”Respuestas:
Las redirecciones se procesan de izquierda a derecha. Si lo haces
La primera redirección
stderr
apunta al flujo questdout
apunta en ese momento (que es su tty esencialmente). No hacestderr
un alias destdout
.Luego
stdout
se redirige al segmento de bits. Lastdout
redirección no afecta lastderr
redirección anterior .stderr
Todavía se refiere a tu tty.Asi que:
imprimirá solo el mensaje de error en su terminal.
La
bash
página de documentación de redirección menciona esto explícitamente:fuente
&>/dev/null
es semánticamente equivalente a/dev/null 2>&1
&>
e>&
(cuando no se utiliza en el contexto2>&1
o>&2
, etc.) son Bash-ismos y no son estándar . No deben usarse en scripts de shell que desee que sean portátiles.