304 votes

Comment diriger stdout tout en le gardant à l'écran? (et non dans un fichier de sortie)

J'aimerais éditer la sortie standard d'un programme tout en la gardant à l'écran.

Avec un exemple simple ( echo utiliser ici uniquement à des fins d'illustration):

$ echo 'ee' | foo
ee <- la sortie que j'aimerais voir

Je sais que tee pourrait copier stdout dans un fichier, mais ce n’est pas ce que je veux.
$ echo 'ee' | tee output.txt | foo

j'ai essayé
$ echo 'ee' | tee /dev/stdout | foo mais cela ne fonctionne pas car la sortie de tee à /dev/stdout est redirigée vers foo

423voto

jlliagre Points 9325
echo 'ee' | tee /dev/tty | foo

82voto

bmk Points 6832

Une autre chose à essayer est:

 echo 'ee' | tee >(foo)
 

Le >(foo) est une substitution de processus .

23voto

Jan Points 1094

Essayer:

 $ echo 'ee' | tee /dev/stderr | foo
 

Si utiliser stderr est une option, bien sûr.

12voto

Michael Martinez Points 580

Vous devez d’abord déterminer le terminal associé à votre écran (ou l’écran sur lequel vous souhaitez afficher la sortie):

 tty
 

vous pouvez ensuite relier la sortie à ce terminal et diriger l’autre copie dans votre programme foo:

 echo ee | tee /dev/pty/2 | foo
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X