web-dev-qa-db-fra.com

Que signifie 2> / dev / null?

J'aimerais une brève explication de la ligne de commande suivante:

grep -i 'abc' content 2>/dev/null 
218
Naive

L'opérateur> redirige généralement la sortie vers un fichier, mais il peut s'agir d'un périphérique. Vous pouvez également utiliser >> pour ajouter.

Si vous ne spécifiez pas de nombre, le flux de sortie standard est utilisé, mais vous pouvez également rediriger les erreurs.

> file redirige stdout vers le fichier
1> file redirige stdout vers le fichier
2> file redirige stderr vers le fichier
&> file redirige stdout et stderr vers le fichier

/dev/null est le périphérique nul qui prend toutes les entrées souhaitées et les jette. Il peut être utilisé pour supprimer toute sortie.

312
Warren Hill

En bref, il redirige stderr (fd 2) vers le trou noir (supprime la sortie de la commande).

Quelques cas d'utilisation plus courants pour la redirection:

command > /dev/null 2>&1 &

Exécutez command en arrière-plan, supprimez stdout et stderr

command >> /path/to/log 2>&1 &

Exécutez command et ajoutez stdout et stderr à un fichier journal.

24
Terry Wang

/dev/null est traité comme un trou noir dans Linux/Unix, vous pouvez donc y mettre n'importe quoi, mais vous ne pourrez pas le récupérer à partir de /dev/null.

De plus, 2> signifie que vous redirigez (i.e. >) le stderr (i.e. 2) dans le trou noir (i.e. /dev/null)

Votre commande est:

grep -i 'abc' content 2>/dev/null 

N'essayez pas de terminer avec une autre barre oblique comme celle-ci - 2>/dev/null/ (ce n'est pas un répertoire).

9
Indrajeet Gour

grep -i 'abc' content générera une sortie affichée sur votre console, y compris les erreurs éventuelles.

Spécifier 2>/dev/null va filtrer les erreurs afin qu'elles ne soient pas sorties sur votre console.

Plus en détail: 2 représente le descripteur d'erreur, c'est-à-dire l'endroit où les erreurs sont écrites. Par défaut, ils sont imprimés sur la console.

> redirige la sortie vers l'emplacement spécifié, dans ce cas/dev/null

/ dev/null est le périphérique linux standard où vous envoyez une sortie que vous souhaitez ignorer.

1
Mauro Zallocco