piper sdterr

Le
Manuel Pégourié-Gonnard
Bonjour,

Comment fait-on pour "piper" la sortie d'erreur d'un processus vers un
autre processus ? Par exemple, j'aimerais éxécuter un script de façon à
ce que ses sorties standard et d'erreur soient bien affichées dans le
terminal comme d'habitude, mais en plus écrites respectivement dans
script.log et script.err.

Pour la sortie standard, je sais le faire avec

./script | tee script.log

et je ne trouve pas comment envoyer la sortie d'erreur du script vers
l'entrée d'un deuxième tee.

Merci d'avance pour vos réponses, et/ou un pointeur précis vers une bonne
doc (google fournit plein de tutoriaux sur les redirections, mais pour
passer du niveau tutoriel au niveau au-dessus, c'est plus dur).

--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #19749641
Manuel Pégourié-Gonnard wrote in message
./script | tee script.log



./script 2>&1 | tee script.log

Pour comprendre les redirections un peu complexes, il faut savoir deux
choses : elles sont faites dans l'ordre où elles apparaissent dans la ligne
de commande, un pipe correspond à une redirection faite sur 1 en tout
premier.
Damien Wyart
Le #19749741
* Manuel Pégourié-Gonnard
Comment fait-on pour "piper" la sortie d'erreur d'un processus vers un
autre processus ? Par exemple, j'aimerais éxécuter un script de façon à
ce que ses sorties standard et d'erreur soient bien affichées dans le
terminal comme d'habitude, mais en plus écrites respectivement dans
script.log et script.err.



(./script 2>&1 1>&3 | tee errors.log) 3>&1 1>&2 | tee output.log

Je n'ai pas de bon pointeur Internet sous la main ; normalement une
lecture des pages man bash et zsh devrait t'éclairer un peu mais c'est
vrai que ça n'est pas simple au début...

--
DW
Manuel Pégourié-Gonnard
Le #19780871
Bonjour Damien,

Damien Wyart scripsit:

* Manuel Pégourié-Gonnard
Comment fait-on pour "piper" la sortie d'erreur d'un processus vers un
autre processus ? Par exemple, j'aimerais éxécuter un script de façon à
ce que ses sorties standard et d'erreur soient bien affichées dans le
terminal comme d'habitude, mais en plus écrites respectivement dans
script.log et script.err.



(./script 2>&1 1>&3 | tee errors.log) 3>&1 1>&2 | tee output.log



Exactement ce que je voulais. Merci beaucoup.

Je n'ai pas de bon pointeur Internet sous la main ; normalement une
lecture des pages man bash et zsh devrait t'éclairer un peu mais c'est
vrai que ça n'est pas simple au début...



Je viens de lire la partie « redirections » de man zshall, j'y ai
découvert plein d'opérateurs de redirection et d'options, mais ce sui me
manque souvent en pratique, c'est de savoir comment les utiliser dans le
bon ordre (par exemple, penser à un sous-shell comme ci-dessus).
J'imagine que ça vient avec la pratique et en lisant des exemples.

--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Publicité
Poster une réponse
Anonyme