Cela n'a pas de sens pour moi.
wibble > /dev/null 2>&1
Je pense que cela aurait plus de sens si c'était quelque chose comme ça:
wibble 2>&1 > /dev/null
En d'autres termes
Commands Output Sendall STDERRORS to STDOUT then SEND it all to /dev/null
Quelle est la pensée derrière l'ordre de la redirection de commande xxx > /dev/null 2>1
?
io-redirection
qui suis je
la source
la source
2>&1
quelque sorte «unit» ou «lie» ou «épouse» les deux FD, de sorte que tout changement [ultérieur] de l'un d'eux devient un changement de l'autre. Ce n'est pas le cas. »Réponses:
Les redirections sont traitées de gauche à droite. Si tu fais
La première redirection indique
stderr
le flux vers lequelstdout
pointe à ce moment-là (qui est essentiellement votre tty). Il ne fait passtderr
d'aliasstdout
.stdout
Est ensuite redirigé vers le compartiment de bits. Lastdout
redirection n'affecte pas lastderr
redirection précédente .stderr
se réfère toujours à votre tty.Alors:
imprimera uniquement le message d'erreur sur votre terminal.
La
bash
page de documentation de redirection le mentionne explicitement:la source
&>/dev/null
est sémantiquement équivalente à/dev/null 2>&1
&>
et>&
(lorsqu'ils ne sont pas utilisés dans le contexte2>&1
ou>&2
, etc.) sont des bash-ismes et ne sont pas standard . Ils ne doivent pas être utilisés dans des scripts shell que vous souhaitez être portables.