web-dev-qa-db-fra.com

Qu'est-ce que la sortie vers / dev / null accomplit dans les scripts bash?

Souvent, je rencontre de petits scripts bash qui utilisent ce type de syntaxe dans les instructions if:

some command > /dev/null 2>&1

Quel est le but de la sortie sur /dev/null ainsi, et que signifie 2>&1?

Cela semble toujours fonctionner, mais j'aimerais savoir ce que ça fait.

121
javanix

>/dev/null redirige la sortie standard de la commande vers le périphérique null, qui est un périphérique spécial qui supprime les informations qui y sont écrites

2>&1 redirige le flux d'erreur standard vers le flux de sortie standard (stderr = 2, stdout = 1). Notez que cela prend le flux d'erreur standard et le pointe vers le même emplacement que la sortie standard à ce moment. C’est la raison de la commande >/some/where 2>&1 car il faut d’abord pointer stdout quelque part et then pointer stderr au même endroit si l’on veut combiner les deux flux à la fin.

En pratique, cela empêche toute sortie de la commande (stdout et stderr) de s'afficher. Il est utilisé lorsque vous ne vous souciez pas de la sortie de la commande.

165
João Pinto

STDIN est représenté par 0, STDOUT par 1 et STDERR par 2.

/ dev/null est le seau à bits: l'endroit où vous videz tout ce dont vous n'avez pas besoin.


Ainsi, le STDOUT est redirigé vers le compartiment de bits (corbeille) et le STDERR est redirigé vers l'emplacement où se trouve le STDOUT: le compartiment de bits.


Vous pouvez aussi faire ceci:

>/dev/null 2>/dev/null
65
Sid