GNU/Linux >> Tutoriels Linux >  >> Linux

Qu'est-ce que '/dev/null 2&1' sous Linux

/dev/null est un fichier de pseudo-périphérique sous Linux, qui est utilisé pour supprimer la sortie provenant de programmes, en particulier ceux exécutés sur la ligne de commande. Ce fichier se comporte comme un récepteur, c'est-à-dire un fichier cible qui peut être écrit, mais dès qu'un flux de données est écrit dans ce fichier, il est immédiatement supprimé.

Ceci est utile pour se débarrasser de la sortie qui n'est pas requise par l'utilisateur. Les programmes et les processus peuvent générer des journaux de sortie d'une longueur énorme, et il est parfois difficile d'analyser le journal.

Par exemple, il y a parfois deux erreurs générées par un programme, mais les journaux d'erreurs sont perdus quelque part entre des centaines de journaux de messages d'information. Dans un tel cas, nous pouvons vider les journaux des messages d'information dans /dev/null .

Dans l'exemple ci-dessus, l'erreur générée par un programme est appelée STDERR (Erreur standard ) sous Linux et est représenté par l'entier ‘2’ , tandis que la sortie de succès et d'informations est appelée STDOUT (Sortie standard ), et est représenté par l'entier ‘1’ .

Maintenant, vous avez peut-être vu très souvent l'instruction de ligne de commande suivante, qui supprime à la fois STDERR et STDOUT à /dev/null .

$ command_name > /dev/null 2>&1

Essayons de comprendre ce que cela signifie.

L'opérateur '>' est appelé un opérateur de redirection. Il redirige la sortie vers le fichier spécifié après, qui dans ce cas est /dev/null , au lieu de l'imprimer sur le terminal.

Cela signifie-t-il TOUS la sortie de la commande est redirigée vers /dev/null avec le '>' opérateur? Non. Lorsqu'il est utilisé comme indiqué ci-dessus, l'opérateur redirige uniquement le STDOUT .

Par conséquent, nous avons la dernière partie de la commande. '2>&1' signifie :rediriger STDERR (2) vers STDOUT (1) . La raison pour laquelle nous devons spécifier ‘&1’ et pas simplement ‘1’ est-ce simplement écrire ‘1’ redirigera la sortie vers un fichier texte avec le nom ‘1’ . Avec l'esperluette (&) le système reconnaît que le 1 n'est pas un nom de fichier, mais le descripteur de fichier STDOUT .

Ainsi, nous redirigeons STDOUT à /dev/null et STDERR vers STDOUT et de cette manière, la sortie complète du ou des programmes est supprimée dans /dev/null .

Par exemple, exécuter la commande mv avec et sans ‘>/dev/null 2>&1’ .

Sans redirection :

$ mv tmp.txt test/tmp2.txt /tmp

Avec redirection de STDOUT :

$ mv tmp.txt test/tmp2.txt /tmp > /dev/null

Avec redirection de STDOUT et STDERR :

$ mv tmp.txt test/tmp2.txt /tmp > /dev/null 2>&1
Conclusion

Dans cet article, nous avons essayé de comprendre quelle est la signification de la phrase de commande couramment utilisée sous Linux :'> /dev/null 2>&1' . Si vous souhaitez en savoir plus sur '/dev/null ‘ plus en profondeur, vous pouvez le faire ici.

Si vous avez des questions ou des commentaires, faites-le nous savoir dans les commentaires ci-dessous !


Linux
  1. DD de /dev/zero à /dev/null...ce qui se passe réellement

  2. Linux :Différence entre /dev/console , /dev/tty et /dev/tty0

  3. ls -l sortie dans le répertoire /dev du système Unix/Linux

  4. echo ou print /dev/stdin /dev/stdout /dev/stderr

  5. Existe-t-il un répertoire équivalent à /dev/null sous Linux ?

tty (/dev/tty ) vs pts (/dev/pts) sous Linux

Comment rediriger la sortie vers /dev/null sous Linux

Qu'est-ce que /dev/null sous Linux

Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

Linux – Comment créer /dev/null ?

/dev/null sous Linux