Ein-/Ausgabeumleitung

© Aschaeffer, sxc.hu

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.

README

Das Arbeiten auf der Shell bietet viele Vorteile. Abgesehen davon, dass es oft schneller geht, ein Kommando zu tippen als ein grafisches Programm zu bemühen, eröffnen Pipelines, Umleitungen und verkettete Kommandos zusätzliche Möglichkeiten.

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 PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

02/2019
Neue Energien

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Scheibchenweise

    Zu den Stärken von Sonic Pi gehört es, mit wenigen Zeilen Code Samples dynamisch auszuwählen und zu zerlegen.

  • Unter Strom

    Für einen kleinen Spannungsmesser wie den INA3221 gibt es viele Einsatzmöglichkeiten. Wir zeigen, wie Sie den flexiblen Baustein richtig verdrahten.

  • Vermittlungsstelle

    Fischertechnik-Modelle bieten sich zum Fernsteuern an. Mit dem Ftduino schlagen Sie die Brücke zwischen dem RasPi und dem Technik-Spielzeug.

  • Durchgeschlängelt

    Mit den M0-Boards steigen Sie unkompliziert in die Welt der Mikrocontroller ein – ganz ohne C-Kenntnisse.

  • Gesiebt und gefiltert

    Filter und Werbeblocker einzurichten ist besonders auf Smartphones aufwendig. Den eBlocker hingegen schließen Sie einfach nur an Ihren Router an.

  • Es werde Licht

    Wollen Sie bei beginnender Dämmerung nicht ständig die Helligkeit der heimischen Beleuchtung nachregeln, überlassen Sie das einfach einem RasPi – der macht es automatisch.

  • Energiekontrolle

    Der Gesetzgeber erschwert das Direktvermarkten von Strom durch technische Hürden: So muss sich die Einspeisung etwa aus der Ferne abschalten lassen. Der RasPi löst das Problem.

  • H<->2<->-Power

    Gilt es, Energie aus einer regenerativen Quelle zu speichern, erweist sich die Kombi aus einer Brennstoffzelle und dem RasPi als ideale Lösung.

  • Kleine Wolke

    Lokale Cloud-Lösungen im Heimnetz finden immer mehr Nutzer. Mit dem RasPi und Seafile haben Sie eine Lösung zur Hand, die selbst professionellen Ansprüchen genügt.

  • Planvoll verdrahtet

    Die Leiterplattendesign-Software KiCad leistet trotz einer etwas umständlichen Bedienung auch Hobbybastlern gute Dienste.