Standardfehlerausgabe
Teil des Abschnitts Grundlagen der Terminal-Journey von Coddy — Lektion 41 von 82.
Der dritte und letzte Datenstrom ist Standardfehler, abgekürzt als stderr. Dieser Strom dient speziell für Fehlermeldungen und Warnungen und hält sie getrennt von der normalen Ausgabe.
Wenn ein Befehl fehlschlägt, wird die Fehlermeldung an die Standardfehlerausgabe und nicht an die Standardausgabe ausgegeben:
ls nonexistent_folderDie Fehlermeldung, die Sie sehen, kommt über stderr. Diese Trennung ist wichtig, weil Sie Fehler unabhängig von der regulären Ausgabe umleiten können.
Um die Standardfehlerausgabe umzuleiten, verwenden Sie 2> anstelle von >:
ls nonexistent_folder 2> errors.txtDie 2 bezieht sich auf die Dateideskriptor-Nummer von stderr (stdout ist 1, stderr ist 2). Dieser Befehl fängt die Fehlermeldung in errors.txt ein, während er Ihren Terminal sauber hält.
Sie können beide Streams in verschiedene Dateien umleiten:
ls existing_folder nonexistent_folder > output.txt 2> errors.txtDie erfolgreiche Ausgabe wird nach output.txt umgeleitet, während Fehler nach errors.txt umgeleitet werden. Um beide Streams in dieselbe Datei zu senden, verwenden Sie 2>&1:
ls existing_folder nonexistent_folder > all_output.txt 2>&1Dies leitet stderr dorthin um, wohin stdout geht, und kombiniert alles in einer Datei.
Aufgabe
EinfachVerwenden Sie den 2>-Operator, um eine Fehlermeldung in eine Datei umzuleiten. Führen Sie diese zwei Befehle der Reihe nach aus:
- Versuchen Sie, einen Ordner namens
missing_foldermitlsaufzulisten und leiten Sie die Fehlermeldung in eine Datei namenserrors.txtum - Verwenden Sie
cat, um den Inhalt vonerrors.txtanzuzeigen
Hinweis: Das Format ist
ls foldername 2> filename. Die Fehlermeldung wird in die Datei geschrieben, anstatt auf dem Bildschirm zu erscheinen. Verwenden Siecat, um zu überprüfen, ob sie erfasst wurde.
Spickzettel
Der Standardfehler-Strom (stderr) wird für Fehlermeldungen und Warnungen verwendet, um sie von der normalen Ausgabe zu trennen.
Um den Standardfehler umzuleiten, verwenden Sie 2>:
ls nonexistent_folder 2> errors.txtDie 2 bezieht sich auf die Dateideskriptor-Nummer von stderr (stdout ist 1, stderr ist 2).
Sie können stdout und stderr in unterschiedliche Dateien umleiten:
ls existing_folder nonexistent_folder > output.txt 2> errors.txtUm beide Streams in dieselbe Datei umzuleiten, verwenden Sie 2>&1:
ls existing_folder nonexistent_folder > all_output.txt 2>&1Probier es selbst
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Verzeichnisse
Ein Verzeichnis erstellenEin Verzeichnis kopierenEin Verzeichnis verschieben und umbenennenEin Verzeichnis löschenZusammenfassung - Verzeichnisoperationen7Dateiinhalt
Head und TailWortanzahlSort-BefehlUniq-BefehlGrep GrundlagenGrep mit FlagsZusammenfassung - Textdetektiv10Log-Analyzer-Projekt
ProjektübersichtAnzeigen der Logdatei2Navigation
Arbeitsverzeichnis anzeigenDateien auflistenVerzeichnis wechselnAbsolute vs. relative PfadeHome- und Root-VerzeichnisZusammenfassung - Den Weg finden8Umleitung
StandardausgabeIn eine Datei überschreibenAn eine Datei anhängenStandardeingabeStandardfehlerausgabeZusammenfassung – Log-Builder3Dateien
Eine Datei erstellenEine Datei lesenEine Datei kopierenEine Datei verschieben und umbenennenEine Datei löschenZusammenfassung - Dateioperationen6Wildcards und Muster
Die Sternchen-WildcardDie Fragezeichen-WildcardKlammer-WildcardsWildcards kombinierenZusammenfassung - Selektive Operationen9Pipes
Was ist eine PipeVerkettung zweier BefehleVerkettung mehrerer BefehlePipe mit GrepZusammenfassung - Daten-Pipeline