Zwei leistungsstarke Funktionen der Linux-Befehlszeilen-Shell sind Umleitung und Pipes, mit denen die Ausgabe (oder sogar die Eingabe) eines Programms an eine Datei oder ein anderes Programm gesendet werden kann. Möglicherweise haben Sie diese Funktionen bereits verwendet, ohne sich dessen bewusst zu sein. Immer wenn Sie das Zeichen " > " in einem Befehl oder " | "Dann haben Sie Umleitung oder eine Leitung verwendet.

Auf allen Unix-ähnlichen Betriebssystemen, wie Linux und FreeBSD, geht die Ausgabe eines Befehlszeilenprogramms automatisch an eine Stelle, die als Standardausgabe (stdout) bekannt ist. Standard out ist standardmäßig der Bildschirm (die Konsole), der jedoch mithilfe von Pipes und Redirection geändert werden kann. Ebenso wird die Tastatur als Standardeingabe (Stdin) betrachtet und wie bei der Standardausgabe kann sie geändert werden.

Rohre

Mit Pipes können Sie die Ausgabe von einem Befehl in einen anderen leiten, wo sie als Eingabe verwendet wird. Mit anderen Worten, die Standardausgabe von einem Programm wird zur Standardeingabe für ein anderes.

Der Befehl " more " übernimmt die Standardeingabe und paginiert sie auf der Standardausgabe (dem Bildschirm). Dies bedeutet, dass wenn ein Befehl mehr Informationen anzeigt, als auf einem Bildschirm angezeigt werden können, das Programm " more " nach dem ersten Bildschirm (Seite) pausiert und darauf wartet, dass der Benutzer SPACE zur Anzeige der nächsten Seite oder RETURN zur Anzeige der nächste Zeile.

Hier ist ein Beispiel, das alle Dateien mit Details ( -la ) im Verzeichnis /dev und die Ausgabe an more leitet. Das /dev Verzeichnis sollte Dutzende von Dateien enthalten und somit sicherstellen, dass more Seiten paginieren müssen.

 ls -la / dev | Mehr 

Beachten Sie die Aufforderung --More-- am unteren Bildschirmrand. Drücken Sie die LEERTASTE, um die nächste Seite anzuzeigen, und halten Sie die LEERTASTE gedrückt, bis die Ausgabe beendet ist.

Hier ist ein anderes Rohrbeispiel, diesmal mit dem Werkzeug " wc " (Wortzählung).

 ls -1 / dev | Toilette 

wc zählt die Anzahl der Zeilen, Wörter und Zeichen in der Standardeingabe. Wenn Sie den Parameter -l, wird nur die Anzahl der Zeilen angezeigt. Auf diese Weise können Sie sehen, wie viele Dateien sich in einem Verzeichnis befinden.

Das Tutorial Linux-Archivierungs- und Komprimierungsbefehle enthält ein Beispiel für die Verwendung von tar und 7-Zip:

 tar cvf - * | 7zr a -si einige Dateien.tar.7z 

In diesem Fall gibt der Bindestrich nach der Option f dass tar seine Ausgabe an den Standardausgang und nicht an eine Datei senden soll. Die Ausgabe von tar wird über die Pipe in 7zr geleitet, die aufgrund der Option -si auf die Eingabe von standard in wartet.

Umleitung

Die Umleitung ist ähnlich wie bei Pipes, außer dass Dateien anstatt eines anderen Programms verwendet werden. Die Standardausgabe für ein Programm ist der Bildschirm. Mit dem Symbol > (größer als) kann die Ausgabe eines Programms in eine Datei gesendet werden. Hier ist wieder eine Verzeichnisliste von /dev, aber dieses Mal umgeleitet in eine Datei namens listing.txt

 ls -la> listing.txt 

Es wird nichts auf dem Terminal angezeigt, da alles an die Datei gesendet wurde. Sie können sich die Datei mit dem Befehl cat anschauen (der in more Dateien eingefügt werden more ) oder Sie können einfach den more command :

 mehr listing.txt 

Wenn listing.txt bereits existiert, wird es überschrieben. Aber Sie können eine bestehende Datei mit >> wie folgt anhängen:

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

Die erste Umleitung überschreibt die Datei listing.txt während die zweite an sie listing.txt wird.

Der Befehl cat kann zum Erstellen einer Datei mithilfe der Umleitung verwendet werden, z.

 cat> atextfile.txt 

Nun wird der von Ihnen atextfile.txt Text an die Datei atextfile.txt gesendet, bis Sie Control-D drücken. An diesem Punkt 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 ( >> ).

Fazit

Viele Linux-Befehlszeilenprogramme sind so konzipiert, dass sie mit Umleitungen und Pipes arbeiten können, experimentieren mit ihnen und sehen, wie sie interagieren. Zum Beispiel kann die Ausgabe des Befehls ps, der die aktuellen Prozesse auflistet, in grep piped werden. Sehen Sie, ob Sie herausfinden können, wie Sie die Prozesse auflisten, die root gehören.