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 tee
die 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: /'
stdout
und 2 = stderr
) zu verwenden, um die Ausgabe des inneren Satzes von Klammern zu übernehmen und stdout
einen sed
Befehl auszuführen , während er stderr
durchlä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.