Comment tee to stderr?

je veux split stdout de sorte qu'il est imprimé à la fois stdout et stderr. Cela ressemble à un travail pour tee mais la syntaxe m'échappe -

./script.sh | tee stderr

bien sûr, comment doit -stderr est-il mentionné ici?

27
demandé sur djechlin 2012-12-10 20:26:22

3 réponses

./script.sh | tee /dev/fd/2

notez que cela dépend du support du système D'exploitation, Pas de puissance intégrée en tee, donc n'est pas universel (mais fonctionnera sur MacOS, Linux, Solaris, FreeBSD, probablement d'autres).

31
répondu Nicholas Wilson 2012-12-10 16:32:53

la seule méthode de plate-forme croisée que j'ai trouvé qui fonctionne à la fois dans les shells interactifs et non-interactifs est:

command | tee >(cat 1>&2)

l'argument à lancer est un gestionnaire de fichier ou de fichier. En utilisant substitution de procédé nous envoyons la sortie à un processus. Dans le processus = cat=, nous redirigeons stdout vers stderr. Le shell (bash / ksh) est responsable de la configuration des descripteurs de fichiers 1 et 2.

39
répondu brianegge 2014-12-07 20:48:46
./script.sh 2>&1 >/dev/null | tee stderr.out

cela ouvre STDERR à STDOUT, puis élimine STDOUT.

-2
répondu David W. 2012-12-10 17:56:46