Si comme moi vous êtes un gros flemmard qui n'est pas curieux au point de se demander pourquoi il croise régulièrement cette redirection
$ macommande > /dev/null 2>&1
dans les scripts shells qu'il édite et réutilise, alors je vous conseille de lire cet article qui va vous l'expliquer en quelques lignes. C'est peut être tout con, mais c'est encore plus con de pas savoir l'expliquer.
Je résume et traduit grossièrement :
il faut se rappeler que tout processus possède 3 flux standards :
- un d'entrée (typiquement le clavier)
- et deux de sortie (la sortie standard et l'erreur étant généralement l'affichage).
Ces trois flux sont représentés par des constantes STDIN, STDOUT et STDERR dont les valeurs sont respectivement 0, 1 et 2.
La redirection du flux de sortie vers /dev/null avec ">" ne va concerner que STDOUT, mais pas STDERR. Les messages envoyés sur cette sortie vont donc se retrouver à l'écran (en tout cas sur la sortie courante, cela peut aussi être un fichier de log).
En précisant "2>/dev/null" on redirige uniquement STDERR.
En utilisant "2>&1" on précise "rediriger STDERR là où est redirigé STDOUT" (le "1"). Si STDOUT est précédemment redirigé vers /dev/null, alors STDERR suivra. C'est aussi simple que ça.
Vous dormirez ensuite moins bête ce soir, enfin j'espère pour moi en tout cas.
Commenter cet article
yannick 26/09/2020 14:41
Nanawel 26/09/2020 19:07
un fan 31/07/2019 16:07
teklib 21/03/2016 17:43
Nanawel 21/03/2016 18:59
Tuxlover 05/02/2014 16:28
Tuxlover 06/02/2014 14:49
Nanawel 05/02/2014 16:39
chouf 10/12/2013 16:39
Almiriad 26/08/2013 12:00
Nanawel 26/08/2013 12:33