Aus LinuxUser 06/2015

Ein-/Ausgabeumleitung

© stevanovicigor, 123RF

Datenfluss

Die Shell hilft, wenn es um kniffelige Probleme geht. Genügen die Fähigkeiten eines einzelnen Tools nicht Ihren Wünschen, verketten Sie einfach mehrere Kommandos.

Auf gute Zusammenarbeit – wer Shell-Befehle miteinander kombiniert, spielt die ganze Stärke der Kommandozeile aus. Dazu gehört nicht nur das Verketten einzelner Programme, sondern auch das Weiterleiten der Ausgaben: Scrollen die Informationen zu schnell über den Bildschirm, leiten Sie diese einfach in eine Datei um oder zeigen Sie seitenweise an.

Gut kombiniert

Mit wenigen Handgriffen verknüpfen Sie in der Bash einzelne Befehle miteinander. Anstelle der Sequenz aus den Zeilen 1 bis 3 von Listing 1 kombinieren Sie die einzelnen Arbeitsschritte und teilen dem Interpreter über das Semikolon mit, dass er alle Befehle direkt hintereinander ausführen soll (Zeile 4).

Listing 1

$ mkdir Ordner
$ cd Ordner
$ cp ../Ordner2/* .
$ mkdir Ordner; cd Ordner; cp ../Ordner2/* .

Noch mehr Kontrolle erhalten Sie, indem Sie der Bash eine Bedingung stellen. So ist es beispielsweise möglich, einen zweiten (oder dritten oder n-ten) Befehl nur dann auszuführen, wenn ein anderes Kommando erfolgreich oder nicht erfolgreich war.

Um beispielsweise eine bestimmte Datei nur dann zu löschen, wenn sie auch tatsächlich vorhanden ist, stellen Sie dem Kommando Rm einen einfachen Test voran:

$ test -w Datei && rm Datei

Das gleichnamige Programm Test sieht in diesem Fall nach, ob die Datei existiert und beschrieben werden darf (Parameter -w). Nur, wenn das der Fall ist, löscht Rm das File.

Bauen Sie häufig Software aus den Quellen und setzen dabei den Dreierschritt ./configure; make; sudo make install ein, können Sie alle drei Befehle miteinander kombinieren und durch && sicherstellen, dass jeder folgende Befehl nur weitermacht, wenn der Vorgänger keine Fehler produziert hat:

$ ./configure && make && sudo make install

Neben der Option -w hat das Kommando Test noch einige weitere praktische Schalter zu bieten. So sehen Sie zum Beispiel mit -d nach, ob ein Verzeichnis schon existiert, und erstellen es nur dann, wenn das nicht der Fall ist:

$ test -d Ordner || mkdir Ordner

Dabei übernehmen die zwei Pipe-Zeichen zwischen den Befehlen die Funktion eines logischen Oder.

Kanalsystem

Für die Ein- und Ausgabe von Befehlen auf der Shell gibt es drei sogenannte Kanäle: Programme lesen Ihre Daten von der Standardeingabe (stdin, Kanal 0) oder aus einer Datei. Seine Ausgaben schreibt das Programm auf die Standardausgabe (stdout, Kanal 1). Fehlermeldungen schließlich landen auf der Standardfehlerausgabe (stderr, Kanal 2):

Befehl < Eingabe > Ausgabe 2> Fehler

Die Operatoren < und > verraten dabei die Richtung: Erfolgt die Standardeingabe nicht über die Tastatur, dann sorgt < dafür, dass der Befehl sie beispielsweise aus einer Datei einliest. Um hingegen die Ausgabe eines Kommandos in eine Datei umzuleiten, dient der Operator >.

Die Fehlerausgabe erreichen Sie ebenfalls über >. Allerdings spezifizieren Sie hier den Kanal durch Voranstellen des File Descriptors (2>). Die Tabelle „Shell-Umleitungen“ zeigt eine Übersicht der gebräuchlichsten Umleitungsszenarien, und die folgenden Abschnitte zeigen detaillierte Anwendungsbeispiele.

Shell-Umleitungen

Kanal Kommando Ergebnis
1 (stdout) Befehl > Datei schreibt die Standardausgabe von Befehl in Datei
1 (stdout) Befehl >> Datei hängt die Standardausgabe von Befehl an Datei an
2 (stderr) Befehl 2> Datei lenkt die Standardfehlerausgabe von Befehl in Datei um
2 (stderr) Befehl 2>> Datei hängt die Standardfehlerausgabe von Befehl an Datei an
1 und 2 (stdout, stderr) Befehl > Datei 2>&1 schreibt Standardausgabe und Standardfehlerausgabe von Befehl in dieselbe Datei
1 und 2 (stdout, stderr) Befehl > Datei 2> Datei2 Standardausgabe von Befehl landet in Datei, die Standardfehlerausgabe in Datei2
0 (stdin) Befehl < Datei leitet Datei in Standardeingabe von Befehl um
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
KAUFEN
LinuxUser 06/2015 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: