Isto não faz sentido para mim.
wibble > /dev/null 2>&1
Eu acho que faria mais sentido se fosse algo assim:
wibble 2>&1 > /dev/null
Em outras palavras
Commands Output Sendall STDERRORS to STDOUT then SEND it all to /dev/null
Qual é o pensamento por trás da ordem do redirecionamento de comando xxx > /dev/null 2>1
?
io-redirection
Quem sou eu
fonte
fonte
2>&1
alguma forma, "une" ou "une" ou "casa" os dois DFs, de modo que qualquer mudança [subsequente] em um deles se torne uma mudança no outro. Este não é o caso. ”Respostas:
Os redirecionamentos são processados da esquerda para a direita. Se você fizer
O primeiro redirecionamento
stderr
aponta para o fluxo questdout
aponta para o momento (que é o seu tty essencialmente). Nãostderr
cria um pseudônimo destdout
.Em seguida,
stdout
é redirecionado para o bloco de bits. Ostdout
redirecionamento não afeta ostderr
redirecionamento anterior .stderr
ainda se refere ao seu tty.Tão:
imprimirá apenas a mensagem de erro no seu terminal.
A
bash
página de documentação de redirecionamento menciona isso explicitamente:fonte
&>/dev/null
é semanticamente equivalente a/dev/null 2>&1
&>
e>&
(quando não usadas no contexto2>&1
ou>&2
etc.) são bash-ismos e não são padrão . Eles não devem ser usados em scripts de shell que você deseja que sejam portáteis.