Cela n'a aucun sens pour moi.
wibble > /dev/null 2>&1
Je pense que ce serait plus logique si c'était quelque chose comme ça :
wibble 2>&1 > /dev/null
Autrement dit
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
?
Réponse acceptée :
Les redirections sont traitées de gauche à droite. Si vous le faites
2>&1 1> /dev/null
La première redirection fait stderr
pointe vers le flux qui stdout
pointe à ce moment-là (qui est essentiellement votre tty). Cela ne fait pas stderr
un alias de stdout
.
Puis stdout
est redirigé vers le seau de bits. La stdout
la redirection n'affecte pas le précédent stderr
réorienter. stderr
fait toujours référence à votre tty.
Donc :
ls file_that_doesnt_exist 2>&1 1> /dev/null
n'imprimera que le message d'erreur sur votre terminal.
Le bash
la page de documentation de la redirection le mentionne explicitement :
Notez que l'ordre des redirections est important. Par exemple, la commande
ls > dirlist 2>&1
dirige à la fois la sortie standard et l'erreur standard vers le fichier dirlist, tandis que la commande
ls 2>&1 > dirlist
dirige uniquement la sortie standard vers le fichier dirlist, car l'erreur standard a été dupliquée à partir de la sortie standard avant que la sortie standard ne soit redirigée vers dirlist .