8.10 Umleitung und Pipes

Manchmal wäre es nützlich, die Ausgabe eines Befehls zur weiteren Bearbeitung in eine Datei zu schreiben oder die Ausgabe eines Befehls als Eingabe für den nächsten Befehl zu verwenden. Die Shell bietet diese Funktion mithilfe von Umleitungen oder Pipes.

Normalerweise ist die Standardausgabe in der Shell der Bildschirm (oder ein geöffnetes Shell-Fenster) und die Standardeingabe erfolgt über die Tastatur. Mithilfe bestimmter Symbole können Sie die Eingabe bzw. Ausgabe an ein anderes Objekt, beispielsweise eine Datei oder einen anderen Befehl, umleiten.

Umadressierung

Mit > können Sie die Ausgabe eines Befehls in eine Datei weiterleiten (Ausgabeumleitung). Mit < können Sie eine Datei als Eingabe für einen Befehl verwenden (Eingabeumleitung).

Pipe

Mithilfe eines Pipe-Symbols | können Sie zudem die Ausgabe umleiten. Mit einer Pipe können Sie mehrere Kommandos kombinieren, wobei die Ausgabe eines Kommandos als Eingabe für das nächste Kommando verwendet wird. Im Unterschied zu den anderen Umleitungssymbolen > und < ist die Verwendung der Pipe nicht auf Dateien beschränkt.

8.10.1 Beispiele für Umleitung und Pipe

  1. Sie schreiben die Ausgabe eines Befehls wie ls in eine Datei, indem Sie Folgendes eingeben:

    ls -l > filelist.txt

    Dadurch wird eine Datei mit dem Namen filelist.txt erstellt, die eine Inhaltsliste des aktuellen Verzeichnisses enthält, welche Sie durch den Befehl ls erzeugt haben.

    Wenn jedoch bereits eine Datei mit dem Namen filelist.txt vorhanden ist, wird mit diesem Befehl die bestehende Datei überschrieben. Sie können dies mit >> anstelle von > verhindern. Wenn Sie Folgendes eingeben:

    ls -l >> filelist.txt 

    wird die Ausgabe des Befehls ls einfach an eine bereits bestehende Datei mit dem Namen filelist.txt angehängt. Wenn die Datei nicht vorhanden ist, wird sie erstellt.

  2. Wenn ein Befehl eine längere Ausgabe erzeugt, wie möglicherweise ls -l, ist es oft nützlich, die Ausgabe mit einer Pipe an einen Viewer wie less zu leiten, damit Sie durch die Seiten blättern können. Geben Sie dazu Folgendes ein:

    ls -l | less

    Die Inhaltsliste für das aktuelle Verzeichnis wird in less angezeigt.

    Die Pipe wird auch häufig in Kombination mit dem Befehl grep verwendet, um eine bestimmte Zeichenfolge in der Ausgabe eines anderen Befehls zu suchen. Wenn Sie beispielsweise eine Liste von Dateien in einem Verzeichnis sehen möchten, die den bestimmten Eigentümer tux haben, geben Sie das Folgende ein:

    ls -l | grep tux