Sehen Sie sich dann die beiden Ausgabedateien an, um zu sehen, was das Programm in STDOUT geschrieben hat und was es in STDERR geschrieben hat.
Anstelle einer Umleitung können teeSie auch per Pipe weiterleiten, wenn Sie die Ausgabe benötigen, um zum Bildschirm sowie in eine Datei zu gelangen. Siehe https://stackoverflow.com/q/692000/477035
Normalerweise verwende ich eine Variante von Option 3: `program | grep .` druckt STDOUT in rot.
Dennis vor 11 Jahren
13
Das Drucken in Rot ist so ziemlich genau das, wonach ich gesucht habe. Danke an RedGrittyBrick & Dennis
Rauffle vor 11 Jahren
0
5
zebediah49
Based on your commented request:
{ { command; } 2>&3 | sed 's/^/STDOUT: /'; } 3>&1 1>&2 | sed 's/^/STDERR: /'
Sieht beeindruckend aus. Aber würden Sie etwas dagegen haben, die Kirschen Ihrem Baum hinzuzufügen und zu erklären, was er tut? Nicht jeder hier ist ein Guru - und dein Konstrukt ist ziemlich komplex;)
Izzy vor 11 Jahren
3
Die Klammern dienen zur Bestellung. Ich habe diese genaue Form tatsächlich von I-forget-where erhalten, aber es geht darum, zusätzliche Dateideskriptoren zu verwenden (jenseits von 1 = `stdout` und 2 =` stderr`), um die Ausgabe des inneren Satzes von Klammern zu übernehmen und `auszuführen stdout` durch einen "sed" -Befehl, während "stderr" einen anderen Befehl durchläuft.
zebediah49 vor 11 Jahren
0
Beeindruckend. Ich wusste nicht, diese zusätzlichen Deskriptoren zu verwenden. Zuerst war ich etwas verwirrt (ich verstehe gerne, was ich renne - und bin etwas verwirrt mit den geschweiften Klammern). Aber jetzt ist es klar - und IMHO genau das, was das OP wollte. Also +1 von mir :)
Izzy vor 11 Jahren
0
This helped me. I wanted to add more data into stderr. This does that and properly outputs everything back on stdout/stderr. `{ { { { echo "stdout" ; echo "stderr">&2; } 2>&3; } 3>&1 1>&2 | awk '' 1>&3; } 3>&2 2>&1; }`
Bryan Drewery vor 11 Jahren
0
0
Hennes
Wenn Sie dies einmal tun möchten, leiten Sie eine von ihnen an einen anderen Ort um.
Beispiel, Standard umleiten mit >.
ls -al> ls-l.txt (jede Ausgabe hier stammt nicht von stdout, wenn Sie etwas sehen, muss es eine stderr-Ausgabe sein)
Für stderr-Weiterleitung verwenden 2>
Der Prozess erstellt einen konstanten Ausgabestrom, der einige für stderr bereitstellt. Ich möchte feststellen, welche ist, da diese Ausgabe auf dem Bildschirm angezeigt wird
Rauffle vor 11 Jahren
0
0
magna_nz
Sie können stderr einfach in eine Datei umleiten, und wenn etwas darin angezeigt wird, ist es von stderr.
z.B ls -a 2> ls-all.txt
Wenn aus irgendeinem Grund ein Fehler an stderr gesendet wurde, wird der Fehler in diese Datei umgeleitet.