Stderr, auch als Standardfehler bekannt, ist der Standarddateideskriptor, in den ein Prozess Fehlermeldungen schreiben kann.
In Unix-ähnlichen Betriebssystemen wie Linux, macOS X und BSD ist stderr durch den POSIX-Standard definiert. Seine standardmäßige Dateideskriptornummer ist 2.
Im Terminal wird der Standardfehler standardmäßig auf dem Bildschirm des Benutzers angezeigt.
Stderr in der Linux-Befehlszeile
In Bash kann der Standardfehler auf der Befehlszeile umgeleitet werden. Das Umleiten von stderr kann nützlich sein, wenn Sie Fehlermeldungen in einer separaten Protokolldatei erfassen oder die Fehlermeldungen vollständig ausblenden müssen.
Betrachten Sie beispielsweise den folgenden Suchbefehl:
find / -iname '*something*'
/usr/share/doc/something /usr/share/doc/something/examples/something_random find: `/run/udisks2': Permission denied find: `/run/wpa_supplicant': Permission denied /usr/share/something /usr/games/something
Wir erhalten Fehler, weil find versucht, einige Systemverzeichnisse zu durchsuchen, für die wir keine Leseberechtigung haben. Die Zeilen mit der Aufschrift „Permission denied“ sind Fehlermeldungen und wurden in stderr geschrieben. Die anderen Zeilen wurden nach stdout (Standardausgabe) geschrieben. Standardmäßig werden beide auf dem Terminal angezeigt.
Um stderr auszublenden, können wir sie umleiten, indem wir auf die Dateideskriptornummer des Standardfehlers, 2, und einen „Umleitungsausgabe“-Operator > verweisen.
find / -iname '*something*' 2>/dev/null
/usr/share/doc/something /usr/share/doc/something/examples/something_random /usr/share/something /usr/games/something
Die Fehler werden nicht mehr angezeigt, da alle Ausgaben an stderr nach /dev/null umgeleitet wurden, dem speziellen Gerät in Linux, das “nirgendwo hingeht”.
Wir könnten auch alle Fehler in eine Datei umleiten:
find / -iname '*something*' 2>output.txt
/usr/share/doc/something /usr/share/doc/something/examples/something_random /usr/share/something /usr/games/something
Wenn Sie nun den Inhalt von output.txt durchsuchen, sehen Sie, dass die Fehlermeldungen dort gespeichert wurden:
cat output.txt
find: `/run/udisks2': Permission denied find: `/run/wpa_supplicant': Permission denied
Ausführliche Informationen zum Umleiten von Datenströmen finden Sie unter Umleitung in Bash.
Fehlermeldung, Bedingungen des Betriebssystems