stderr und stdout auf der Bash umleiten

Wenn ein Programm auf der Linux-Konsole gestartet wird gibt es zweierlei Ausgabedatenströme. Dies sind zum einen die stdout für Ausgaben mit denen das Programm arbeitet und zum anderen stderr für Ausgaben welche einem Fehlverhalten dessen zugrunde liegen.

Diese beiden Ausgabedatenströme kann man aus diversen Gründen zusammenlegen oder in eine andere Richtung umleiten. Dies gilt für diverse Kombinationen mit folgenden Direktiven:

Umleiten von Ausgaben in stderr nach stdout

echo "Hello World" 2>&1

Mit dieser Angabe werden alle Fehlerausgaben auf stdout zugleich mit stderr auf der Konsole zusammengefasst ausgegeben. Dies ist zumeist die häufigst verwendete Variante der Ausgabeumleitung. So kann der Bediener der Konsole alle Ausgaben des Programms unmittelbar sehen.

Umleiten von Ausgaben in stdout nach stderr

echo "Hello World" 1>&2

Alle Ausgaben werden nach stderr geschrieben. Damit werden keinerlei Ausgaben auf stdout ausgegeben und so bleibt die Konsole leer. Dies kann erwünscht sein, sofern den Bediener die Ausgaben nicht interessieren oder die Ausgaben ohnehin von dem ausführenden Programm nicht berücksichtigt werden.

Umleiten von stderr und stdout in eine Datei bzw. Datenstrom

Manchmal interessieren einen die Ausgaben schlicht und ergreifend nicht, da es die Verarbeitung nicht erfordert. Also können Ausgaben jeglicher Art ignoriert werden durch:

undefinedprogram &> /dev/null

Oder automatisierte Prozesse erfordern das Loggen aller Ausgaben in einer Datei. Diese können mit dieser Bash-direction zusammengefasst in eine separater Datei weggeschrieben werden.

undefinedprogram &> combined_output.log

Umleiten von stdout in eine Datei

Die wohl am häufigsten verwendete Verwendung um alle Standardausgaben eines Programms in eine Datei zu schreiben.

echo "Hello World" > output.log

Oder die Verwendung des doppelten > Zeichens um die Ausgaben einer bestehenden Datei anzuhängen:

echo "Hello World" >> output.log

Umleiten von stderr in eine Datei

echo "Hello World" 2> error.log

Diese Art der Bash-Umleitung leitet alle Fehler der Programmausführung in eine Datei. Dies ist dann nützlich wenn nur das Fehlverhalten der Software in eine Datei ausgespeichert werden sollen.

Veröffentlicht von

Sebastian

Als erfahrener Softwarentwickler entwickelt Sebastian in einer Softwareschmiede in Bonn Individualsoftware mit den Schwerpunkten in PHP und MySQL. Er hat eine pfiffige Frau sowie drei quirlige Söhne, fährt gerne Auto und liebt handwerkliche Arbeiten die im häuslichen Umfeld so anfallen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich akzeptiere