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

08/2018
Projekte & Hacks

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Fernverkehr

    Zwar wurde I2C eigentlich für die interne Gerätekommunikation konzipiert, doch mithilfe geeigneter Extender-Bausteine überbrückt der Bus Distanzen bis zu 100 Metern.

  • Neues auf der Heft-DVD

    Nur mit dem optimalen System und der richtigen Software nutzen Sie das volle Potenzial eines Mini-PC. Mit der Heft-DVD erhalten Sie nicht nur die neusten Distributionen für den RasPi und Co., sondern gleichzeitig auch die passenden Programme zu den Artikeln.

  • Farbenspiele

    Der winzige Sensorbaustein APDS-9960 vereint vier unterschiedliche Anwendungsfälle in einem Chip.

  • Finger weg!

    Mit einem Read-only-Dateisystem schützen Sie die SD-Karte vor dem Altern durch Schreibvorgänge. Beim Aufsetzen gilt es, einige wichtige Punkte zu beachten.

  • Auf Zuruf

    Mit dem bereits Anfang 2017 angekündigten und jetzt endlich verfügbaren Voice offeriert Matrix Labs eine neue Erweiterung, die den Raspberry Pi fit für Sprachsteuerung machen soll.

  • Experimentell

    Wer elektronische Schaltungen entwirft, experimentiert oft erst einmal mit einem Breadboard. Genau für diese Bastler bietet sich der NanoPi-Duo als Steuerrechner an.

  • Aufgemöbelt

    Mit dem Desktop-Kit von Farnell gibt der RasPi auch auf dem Schreibtisch technisch und optisch eine gute Figur ab.

  • PiBot

    Aus einem Fischertechnik-Baukasten lässt sich schon mit wenigen Teilen ein Roboter aufbauen. Fehlt nur noch ein Gehirn: Das stellt der Raspberry Pi.

  • Heißkalt serviert

    Wie verwandelt sich ein Linux-System auf einem RasPi in einen Datenlogger? Indem es mit einem Bluetooth-fähigen Multimeter spricht.

  • Türwächter

    Der RasPi beteiligt sich am Internet der Dinge und wacht als smartes Schließsystem autonom über den Zugang zum Eigentum.