Grundlegendes zu Pipes und Umleitung für die Linux-Befehlszeile

Zwei leistungsstarke Funktionen der Linux-Befehlszeilen-Shell sind Umleitung und Pipes, die es ermöglichen, die Ausgabe (oder sogar Eingabe) eines Programms an eine Datei oder ein anderes Programm zu senden. Möglicherweise haben Sie diese Funktionen bereits genutzt, ohne sich dessen bewusst zu sein. Wann immer Sie das „>“-Zeichen in einem Befehl oder „|“ verwendet haben dann haben Sie eine Umleitung bzw. eine Pipe verwendet.

Auf allen Unix-ähnlichen Betriebssystemen wie Linux und FreeBSD erfolgt die Ausgabe eines Befehlszeilenprogramms automatisch an einen Ort, der als Standardausgabe (stdout) bezeichnet wird. Standardmäßig ist der Standardausgang der Bildschirm (die Konsole), aber das kann mithilfe von Pipes und Umleitung geändert werden. Ebenso gilt die Tastatur als Standardeingabe (stdin) und kann wie bei der Standardausgabe geändert werden.

Rohre

Mit Pipes können Sie die Ausgabe eines Befehls in einen anderen leiten, wo sie als Eingabe verwendet wird. Mit anderen Worten: Die Standardausgabe eines Programms wird zur Standardeingabe eines anderen Programms.

Der Befehl „more“ übernimmt die Standardeingabe und paginiert sie auf der Standardausgabe (dem Bildschirm). Das bedeutet, dass, wenn ein Befehl mehr Informationen anzeigt, als auf einem Bildschirm angezeigt werden können, das Programm „Mehr“ anhält, nachdem der erste Bildschirm voll ist (Seite) und darauf wartet, dass der Benutzer die LEERTASTE drückt, um die nächste Seite anzuzeigen, oder die EINGABETASTE, um die anzuzeigen nächste Zeile.

Hier ist ein Beispiel, das alle Dateien mit Details (-la) im Verzeichnis /dev auflistet und die Ausgabe an more weiterleitet. Das Verzeichnis /dev sollte Dutzende von Dateien enthalten und daher sicherstellen, dass mehr Seiten paginiert werden müssen.

Beachten Sie die Eingabeaufforderung „Mehr“ am unteren Bildschirmrand. Drücken Sie die LEERTASTE, um die nächste Seite anzuzeigen, und drücken Sie so lange die LEERTASTE, bis die Ausgabe abgeschlossen ist.

Hier ist ein weiteres Pipe-Beispiel, dieses Mal mit dem Tool „wc“ (Wortzählung).

wc zählt die Anzahl der Zeilen, Wörter und Zeichen in der Standardeingabe. Wenn Sie den Parameter -l verwenden, wird nur die Anzahl der Zeilen angezeigt. Dies ist eine gute Möglichkeit, zu sehen, wie viele Dateien sich in einem Verzeichnis befinden!

Das Tutorial „Ausführlicher Blick auf die Archivierungs- und Komprimierungsbefehle von Linux“ enthält ein Beispiel für die gemeinsame Verwendung von tar und 7-Zip:

tar cvf - * |  7zr a -si somefiles.tar.7z

In diesem Fall weist der Bindestrich nach der f-Option tar an, seine Ausgabe an den Standardausgang und nicht an eine Datei zu senden. Die Ausgabe von tar wird über die Pipe an 7zr weitergeleitet, das aufgrund der Option -si auf die Eingabe von Standard-in wartet.

Umleitung

Die Umleitung ähnelt Pipes, verwendet jedoch Dateien anstelle eines anderen Programms. Die Standardausgabe eines Programms ist der Bildschirm. Mit dem Symbol > (größer als) kann die Ausgabe eines Programms in eine Datei gesendet werden. Hier ist erneut eine Verzeichnisliste von /dev, diesmal jedoch umgeleitet zu einer Datei namens „listing.txt“.

Auf dem Terminal wird nichts angezeigt, da alles an die Datei gesendet wurde. Sie können einen Blick auf die Datei werfen, indem Sie den Befehl „cat“ verwenden (der in „more“ weitergeleitet werden kann) oder der Einfachheit halber einfach den Befehl „more“ allein verwenden:

Wenn die Datei „listing.txt“ bereits vorhanden war, wird sie überschrieben. Sie können jedoch mit >> wie folgt an eine vorhandene Datei anhängen:

ls -la /home > list.txt ls -la /dev >> list.txt

Bei der ersten Umleitung wird die Datei „listing.txt“ überschrieben, während bei der zweiten Umleitung eine Datei angehängt wird.

Mit dem Befehl cat kann eine Datei mithilfe der Umleitung erstellt werden, zum Beispiel:

Nun wird der von Ihnen eingegebene Text an die Datei atextfile.txt gesendet, bis Sie Strg-D drücken. Anschließend wird die Datei geschlossen und Sie kehren zur Eingabeaufforderung zurück. Wenn Sie der Datei mehr Text hinzufügen möchten, verwenden Sie denselben Befehl, jedoch mit zwei Größer-als-Zeichen (>>).

Abschluss

Viele Linux-Befehlszeilenprogramme sind für die Arbeit mit Umleitungen und Pipes konzipiert. Experimentieren Sie mit ihnen und sehen Sie, wie sie interagieren. Beispielsweise kann die Ausgabe des ps-Befehls, der die aktuellen Prozesse auflistet, an grep weitergeleitet werden. Versuchen Sie herauszufinden, wie Sie die Prozesse auflisten können, die Root gehören.

Index
  1. Rohre
  2. Umleitung
  3. Abschluss

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Go up