GNU/Linux >> Tutoriels Linux >  >> Linux

Comment savoir si la sortie d'une commande ou d'un script shell est Stdout ou Stderr ?

Disons que j'exécute une commande ou un script shell, et cela me donne une sortie. Sans connaître les composants internes de cette commande ou de ce script shell, comment déterminer si la sortie provient de stderr ou stdout ?

Par exemple,

$ ls -ld /
drwxrwxr-t  35 root  admin  1258 Dec 11 19:16 /

contre

ls -ld /test
ls: /test: No such file or directory

Comment puis-je m'assurer que la première commande imprimée sur stdout et le second à stderr (l'a fait ?) ?

Réponse acceptée :

Il n'y a aucun moyen de savoir une fois que la sortie a déjà été imprimée. Dans ce cas, les deux stdout et stderr sont connectés au terminal, de sorte que les informations sur le flux qui a été écrit étaient déjà perdues au moment où le texte est apparu sur votre terminal ; ils ont été combinés par le programme avant même d'arriver au terminal.

Ce que vous pouvez faire, dans un cas comme celui ci-dessus, serait d'exécuter la commande avec stdout et stderr redirigé vers différents endroits et voir ce qui se passe. Ou exécutez-le deux fois, une fois avec stdout redirigé vers /dev/null et une fois avec stderr redirigé vers /dev/null , et voyez lequel de ces cas entraîne l'affichage du texte.

Vous pouvez rediriger stdout à /dev/null en taquant >/dev/null à la fin de la ligne de commande, et vous pouvez rediriger stderr à /dev/null en ajoutant 2>/dev/null .


Linux
  1. Comment affecter la sortie d'une commande Linux à une variable

  2. Comment enregistrer la sortie de la commande dans un fichier sous Linux

  3. Comment stocker une commande dans une variable dans un script shell ?

  4. Comment gérer la verbosité du journal dans un script shell ?

  5. Comment nettoyer la sortie de la commande Linux 'script'

Comment exécuter une commande / un script Linux Shell en arrière-plan

Comment exécuter des commandes Shell via un serveur HTTP

Comment rediriger la sortie de la commande shell

Comment stocker une commande Linux en tant que variable dans un script shell

Comment savoir sur quelle version d'Os X je suis depuis la ligne de commande ?

Comment exécuter une commande dans un script shell ?