GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi la redirection de Stderr vers /dev/null se fait-elle de cette façon ?

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 .


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

  2. Quand utiliser /dev/random contre /dev/urandom ?

  3. Comment désactiver complètement un Cronjob vers /dev/null/?

  4. Comment encoder en base64 /dev/random ou /dev/urandom ?

  5. Shell :redirige stdout vers /dev/null et stderr vers stdout

/dev/null sous Linux

Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

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

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

noyau :désactiver /dev/kmem et /dev/mem

Créer un périphérique de bloc virtuel qui écrit dans /dev/null