Comment puis-je déterminer si ce qu'un processus génère est stdout ou stderr?
22
Je ne connais que trois façons de déterminer ce qu'un programme va sortir sur STDOUT et quoi sur STDERR
Lisez la documentation. Ou
Expérimentez avec la redirection †
†Par exemple:
program > program.stdout 2> program.stderr
Regardez ensuite les deux fichiers de sortie pour voir ce que le programme a écrit dans STDOUT et ce qu'il a écrit dans STDERR.
Au lieu de la redirection, vous pouvez diriger vers tee
si vous avez besoin d'une sortie pour continuer à l'écran ainsi que dans un fichier. Voir /programming//q/692000/477035
program | grep .
imprime STDOUT en rouge.Sur la base de votre demande commentée:
la source
stdout
et 2 =stderr
) pour prendre la sortie de l'ensemble interne de crochets, et exécuterstdout
unesed
commande, tout enstderr
passant par un autre.{ { { { echo "stdout" ; echo "stderr">&2; } 2>&3; } 3>&1 1>&2 | awk '{print "ERROR:",$0}' 1>&3; } 3>&2 2>&1; }
Vous pouvez simplement rediriger stderr vers un fichier et si quelque chose apparaît, c'est de stderr.
par exemple
ls -a 2> ls-all.txt
s'il y a eu une erreur pour quelque raison que ce soit envoyée à stderr, elle sera redirigée vers ce fichier.
la source
Si vous voulez le faire une fois, redirigez l'un d'entre eux ailleurs.
Exemple, rediriger la sortie standard avec
>
.ls -al> ls-l.txt (toute sortie ici ne provient pas de stdout, si vous voyez quelque chose, il doit s'agir d'une sortie stderr)
Pour la redirection stderr
2>
la source