stderr (Standardfehler)
100%

Text-Fu · Lektion 3

stderr (Standardfehler)

Lerne, die Standardfehlerausgabe in Bash getrennt umzuleiten oder mit der Standardausgabe zusammenzuführen.

Programme schreiben reguläre Ergebnisse normalerweise in die Standardausgabe und Diagnosen in einen getrennten Strom namens Standardfehlerausgabe oder stderr. Durch die Trennung kannst du nützliche Daten speichern, ohne Fehlermeldungen mit ihnen zu vermischen.

Reguläre Ausgabe und Fehler trennen

Betrachte einen Befehl mit einem nicht vorhandenen Pfad:

$ ls /fake/directory > peanuts.txt
ls: cannot access '/fake/directory': No such file or directory

Der Operator > leitet nur stdout um. Die Diagnose wird nach stderr geschrieben, das weiterhin mit dem Terminal verbunden ist. Gleichzeitig erstellt oder leert die Shell peanuts.txt für stdout, obwohl ls kein reguläres Ergebnis erzeugt.

Die Standardströme verwenden konventionsgemäß diese Dateideskriptoren:

  • 0: stdin (Standardeingabe)
  • 1: stdout (Standardausgabe)
  • 2: stderr (Standardfehlerausgabe)

Warum bleibt der Fehler von ls /missing > results.txt normalerweise im Terminal sichtbar?

stderr mit 2> umleiten

Setze den Dateideskriptor 2 vor >, um stderr umzuleiten:

$ ls /fake/directory 2> errors.txt

Die Shell erstellt oder leert errors.txt und verbindet die Datei mit Deskriptor 2. Stdout behält sein bisheriges Ziel. Verwende stattdessen 2>> errors.txt, wenn Fehlerausgaben angehängt werden sollen.

Welcher Befehl ersetzt errors.log durch Diagnosen von find /restricted, während stdout mit seinem bisherigen Ziel verbunden bleibt?

stdout und stderr zusammenführen

Um beide Ausgabeströme in eine Datei zu schreiben, leitest du zuerst stdout um und duplizierst danach stderr auf das aktuelle Ziel von stdout:

$ ls /fake/directory /etc/passwd > combined.txt 2>&1

Umleitungen werden von links nach rechts verarbeitet:

  1. > combined.txt verbindet stdout mit der Datei.
  2. 2>&1 verbindet stderr mit dem Ziel, auf das stdout in diesem Moment zeigt.

Eine umgekehrte Reihenfolge ändert das Ergebnis:

$ ls /fake/directory /etc/passwd 2>&1 > regular.txt

Hier dupliziert stderr zuerst das ursprüngliche Terminalziel von stdout. Danach wird nur stdout nach regular.txt verschoben; die Ströme enden an unterschiedlichen Orten.

Welche Bash-Umleitung sendet stdout und stderr von command gemeinsam nach all.log?

Bash bietet mit &> außerdem eine kürzere Syntax, um eine Datei durch beide Ströme zu ersetzen:

$ ls /fake/directory /etc/passwd &> combined.txt

Mit &>> hängst du beide Ströme in Bash an. Die ausdrückliche Form > file 2>&1 solltest du ebenfalls erkennen, da sie häufig in Shell-Skripten und Dokumentationen vorkommt.

Welcher Bash-Befehl hängt stdout und stderr von build gemeinsam an build.log an?

Einen Strom bewusst verwerfen

/dev/null ist ein besonderes Gerät, das alle hineingeschriebenen Daten verwirft. Leite stderr nur dann dorthin um, wenn du festgestellt hast, dass die Diagnosen erwartet und entbehrlich sind:

$ ls /fake/directory 2> /dev/null

Dadurch wird der Befehl weder erfolgreich noch sein Beendigungsstatus verändert; lediglich der Diagnosestrom bleibt unsichtbar. Bei der Fehlersuche solltest du stderr bewahren oder anzeigen, statt benötigte Informationen zu verwerfen.

Was verändert check-data 2> /dev/null?

Mit dieser Übung kannst du die Verwaltung aller drei Standardströme praktisch trainieren:

  1. Umleitung von Eingabe und Ausgabe in Linux – Steuere den Datenfluss von Befehlen, indem du Standardausgabe, Standardfehler und Standardeingabe mit Operatoren wie >, >> und 2> sowie dem Befehl tee umleitest.

Lektion abgeschlossen

Sie haben stderr (Standardfehler) abgeschlossen

Du kannst nun Diagnosen getrennt halten oder mit regulären Befehlsausgaben zusammenführen.

  • Erkenne stderr als Dateideskriptor 2.

  • Ersetze oder ergänze ein Fehlerprotokoll mit 2> oder 2>>.

  • Verarbeite mehrere Umleitungen von links nach rechts.

  • Führe beide Ausgabeströme mit bewusst gewählter Syntax zusammen.

  • Verwirf Diagnosen nur, wenn ihr Verlust vertretbar ist.

Lernfortschritt speichern

Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.

Kostenloses Konto erstellen
Nächste Lektion
Zurück zu Text-Fu