UnixTools01 11
Redirection - part 2
Umlenken von stderr
Es ist Konvention, dass Programme ihre gewöhnlicheAusgabe auf den Ausgabekanal stdout schrieben und Fehlernachrichten auf einen anderen Kanal, namens stderr.
Normalerweise sind beide Kanäle mit dem Bilschrim verbunden, d.h. egal ob das >Programm eine normale Ausgabe über stdout ausgibt, oder eine Fehlernachricht über stsderr, sie erscheinen beide auf dem Bildschirm.
Weiter haben wir gesehen, dass man mit > datei den Ausgabekanal stdout in eine Datei umlenken kann
$ ls -la /bin > /tmp/files.txt
Im obigen Beispiel würde das kommando ls' seine Ausgabe (die Liste von Dateien) in die Datei /tmp/files.txt schreiben. Sollten dabei Fehler auftreten, würden diese aber weiterhin auf dem Bildschrim erscheinen, weil stderr noch nicht umgelenkt wurde.
$ ls -lisa 2> /tmp/errors.txt
Mit 2> datei kann man nun den Ausgabekanal stderr in eine Datei umlenken. Im Obigen Beispiel würden also die normalen Ausgaben auf dem Bildschirm erscheinen (weil stdout nicht umgelenkt wurde), alle Fehlernachrichten würden dagegen in die Datei /tmp/errors.txt geschrieben (umgelenkt) werden.
$ ls -lisas > /tmp/files.txt 2> /tmp/errors.txt
Es ist auch möglich, stdout in eine Datei und stderr in eine ander Datei umzulenken.
2>&1
Normalerweise ist es eine gute Sache, für die normalen Ausgaben (stdout) und Fehlernachrichten (stderr) getrennt entscheiden zu können, ob und wohin sie umgelenkt werden. Manchmal mchte man sie einfach zu einem Kanal zusammenfassen. Mit 2>&1 legen wir fest, dass stderr (ebenfalls) dorthin umgelenkt wird, wohin gerade stdout umgelenkt ist.