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