Antworten:
Ich kenne nur drei Möglichkeiten, um zu bestimmen, was ein Programm an STDOUT und was an STDERR ausgibt
Lesen Sie die Dokumentation. Oder
Experimentieren Sie mit der Umleitung †
†Beispielsweise:
program > program.stdout 2> program.stderr
Schauen Sie sich dann die beiden Ausgabedateien an, um zu sehen, was das Programm in STDOUT und was in STDERR geschrieben hat.
Anstelle der Umleitung können Sie eine Pipe-Funktion verwenden, um teedie Ausgabe auf dem Bildschirm und in einer Datei fortzusetzen. Siehe /programming//q/692000/477035
Basierend auf Ihrer kommentierten Anfrage:
{ { command; } 2>&3 | sed 's/^/STDOUT: /'; } 3>&1 1>&2 | sed 's/^/STDERR: /'
stdoutund 2 = stderr) zu verwenden, um die Ausgabe des inneren Satzes von Klammern zu übernehmen und stdouteinen sedBefehl auszuführen , während er stderrdurchläuft eine andere.
{ { { { echo "stdout" ; echo "stderr">&2; } 2>&3; } 3>&1 1>&2 | awk '{print "ERROR:",$0}' 1>&3; } 3>&2 2>&1; }
Wenn Sie dies einmal tun möchten, leiten Sie einen von ihnen an eine andere Stelle um.
B. Umleitung Standard raus mit >.
ls -al> ls-l.txt (jede Ausgabe hier ist nicht von stdout, wenn Sie etwas sehen, muss es eine stderr-Ausgabe sein)
Für die stderr Umleitung verwenden 2>
program | grep .STDOUT wird rot gedruckt.