In dem letzten Linux-Artikel hatte ich darüber berichtet, wie man Dateien bearbeiten und packen kann. Wenn man jetzt eine Datei mit dem Befehl nano oder less anzeigen lässt, wird einem der Dateiinhalt auf dem Bildschirm ausgegeben. Das ist, denke ich, jedem klar und auch nichts wirklich Besonderes, denn man kennt es von Windows ja auch schon: Wenn ich eine Textdatei z. B. mit dem Editor öffne, bekomme ich den Inhalt angezeigt.
In diesem Artikel möchte ich aber auf die 3 Standard Ein / Ausgabekanäle (Streams) einer Shell eingehen.
Vom Grundgedanken ist es, denke ich, ja jedem klar: Man muss erst etwas eingeben, damit der Computer weiß, was er verarbeiten soll. Diese Eingabe der Daten wird in der Regel über die Tastatur getätigt. Nach der Eingabe werden die Daten dann von einem Programm verarbeitet und auf dem Bildschirm ausgegeben. Aber ich denke, in einer Tabelle kann ich das besser veranschaulichen.
| Bezeichnung | Bedeutung |
| stdin (Kanal 0) | Es steht für Standard Input. Dies ist der oben beschriebene Eingabekanal, bei welchem in der Regel die Daten über die Tastatur eingegeben werden. |
| stdout (Kanal 1) | Dies steht für Standard Output und ist der Ausgabekanal, bei dem in der Regel die Daten auf dem Bildschirm ausgegeben werden. |
| stderr (Kanal 2) | Das hier ist der standard error Kanal, dort werden die Fehlermeldungen in der Regel auf dem Bildschirm ausgegeben. |
Diese Standardkanäle kann man jetzt auch in Dateien umleiten oder aus einer Datei hin umgeleitet werden. Das heißt, dass man z. B. aus einer Textdatei über den stdin-Kanal etwas einlesen kann, oder über den stdout Kanal die Ausgabe von einem Befehl in eine Datei speichern kann. Aber ich denke, das System kann man am besten an einem Beispiel verstehen.
pwd 1> Ausgabe.txt
Hier wird der aktuelle Pfad mit dem Befehl pwd abgefragt und ausgegeben, und diese Ausgabe wird über den stdout-Kanal in die Datei Ausgabe.txt geschrieben. Wenn davor etwas in der Datei stand, wird dieser Inhalt überschrieben
pwd 2> Error.txt
Diesen Befehl kann man z. B. für einen Error-Log verwenden, hier wird auch wieder der aktuelle Pfad über pwd abgefragt. Wenn bei dieser Abfrage ein Fehler entsteht, wird dieser über den Kanal 2 (stderr) in die Datei Error.txt geschrieben. Wie bei dem oben stehenden Befehl auch wird die Error-Datei überschrieben, wenn bereits etwas darin steht.
pwd 1>> Ausgabe.txt
Vom Grundgerüst sieht dieser Befehl ja fast gleich aus wie der oben erste. Er macht auch fast genau das Gleiche, er gibt wieder den aktuellen Pfad des Users aus und speichert diesen in der Datei Ausgabe.txt. Aber mit den zwei „>>“ signalisiert man, dass diese Ausgabe an den bestehenden Inhalt der Datei angehängt werden soll.
mail –s “Hallo” Name@irgendeinedomain.de < Emailnachricht.txt
Man kann, wie ich oben schon beschrieben habe, nicht nur Ausgaben in eine Datei speichern, sondern auch den Inhalt einer Datei auslesen. Mit diesem Befehl wird z. B. eine E-Mail an den Benutzer mit der E-Mail-Adresse „Name@irgendeinedomain.de“ geschickt. Als Betreff wird das Wort „Hallo“ verwendet und der textliche Inhalt wird aus der Datei „E-Mmail-Nachricht“ entnommen.
Ihr seht, mit den Standardkanälen kann man einiges machen und es ist im Grunde gar nicht so schwer.
Hier geht es zu den bisherigen Teilen der Artikelserie Linux: