2010-03-12 6 views

Répondre

11

annotate-output, à partir de Debiandevscripts, fait ceci.

L'exemple dans sa page man:

 
$ annotate-output make 
21:41:21 I: Started make 
21:41:21 O: gcc -Wall program.c 
21:43:18 E: program.c: Couldn't compile, and took me ages to find out 
21:43:19 E: collect2: ld returned 1 exit status 
21:43:19 E: make: *** [all] Error 1 
21:43:19 I: Finished with exitcode 2 
+1

a choisi cette réponse, car il est préférable de préserver l'ordre, même si vous devez rincer la sortie tout le temps ... –

10

Essayez ceci:

(myCommand | sed s/^/stdout:/ >> myLogfile) 2>&1 | sed s/^/stderr:/ >> myLogFile 

Le premier tuyau insère un préfixe stdout: à la sortie standard de myCommand et l'ajoute myLogFile.

Les parenthèses sont utilisées pour faire une seule commande de tout cela. Ils indiquent que d'autres redirections s'appliquent à ce qui est entre parenthèses et non à sed uniquement.

Ensuite, l'erreur standard est redirigée vers la sortie standard avec 2>&1 (rappelez-vous que la sortie standard d'origine a déjà été redirigée vers un myLogFile). Le deuxième canal insère un préfixe stderr: et l'ajoute à myLogFile.

+0

Je tâtonne mon chemin dans ce sens, mais le vôtre est beaucoup plus propre. –

+0

pouvez-vous élaborer sur cette réponse? Je pense que je le comprends, sauf pour les parenthèses ... –

+0

Par commodité, '2> & 1 |' peut être écrit comme '| &' dans Bash 4 ou zsh. C'est quelque peu symétrique avec '&> file' ou'> & file' qui sont des raccourcis pour '> fichier 2> & 1'. – ephemient

Questions connexes