Risposte:
Ci sono solo tre modi che conosco per determinare quale programma verrà trasmesso su STDOUT e cosa su STDERR
Leggi la documentazione O
Sperimenta il reindirizzamento †
†Per esempio:
program > program.stdout 2> program.stderr
Quindi guarda i due file di output per vedere cosa ha scritto il programma su STDOUT e cosa ha scritto su STDERR.
Invece del reindirizzamento, è possibile reindirizzare tee
se è necessario l'output per continuare sullo schermo e in un file. Vedi /programming//q/692000/477035
Sulla base della tua richiesta commentata:
{ { command; } 2>&3 | sed 's/^/STDOUT: /'; } 3>&1 1>&2 | sed 's/^/STDERR: /'
stdout
e 2 = stderr
) per prendere l'output del set interno di parentesi ed eseguire stdout
un sed
comando, mentre stderr
passa attraverso uno diverso.
{ { { { echo "stdout" ; echo "stderr">&2; } 2>&3; } 3>&1 1>&2 | awk '{print "ERROR:",$0}' 1>&3; } 3>&2 2>&1; }
Se vuoi farlo una volta spento, reindirizza uno di loro da qualche altra parte.
Esempio, reindirizzare lo standard con >
.
ls -al> ls-l.txt (qualsiasi output qui non proviene da stdout, se vedi qualcosa deve essere output stderr)
Per il reindirizzamento stderr utilizzare 2>
program | grep .
stampa STDOUT in rosso.