Linux 6: Standard Ein- und Ausgabekanäle
In den 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 das 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 Fehlernachrichten in der Regel auf dem Bildschirm ausgegeben. |
Diese Standard Kanäle kann man jetzt auch in Dateien umleiten oder aus einer Datei hin umgeleitet werden. Das heißt das man z.B. aus einer Textdatei über den stdin Kanal etwas einlesen kann, oder über den stdout Kanal kann man die Ausgabe von einem Befehl in eine Datei speichern. 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 2 >> signalisiert man das 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 Email an den Benutzer mit der Emailadresse “Name@irgendeinedomain.de” geschickt. Als Betreff wird das Wort “Hallo” verwendet und der Textliche Inhalt wird aus der Datei Emailnachricht entnommen.
Ihr seht mit den Standard-Kanälen kann man einiges machen und es ist im Grunde gar nicht so schwer.
Hier geht es zu den bisherigen Teilen der Artikelserie Linux:
Linux1: Grundlagen Listen von Verzeichnissen
Linux2: Verzeichniswechsel und Kopieren
Linux 3: Wildcards und Dateien und Verzeichnisse erstellen
Linux 4: Verschieben, umbenennen und löschen
Linux 5: Bearbeiten und packen von Dateien
eff094f078134227bd22e6fe152c5ced