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.
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).
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.
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.
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