Zwei leistungsstarke Funktionen der Linux-Befehlszeilen-Shell sind Umleitung und Pipelines, mit denen Sie die Ausgabe (oder sogar Eingabe) eines Programms an eine Datei oder an ein anderes Programm senden können. Möglicherweise haben Sie diese Funktionen schon einmal verwendet, ohne sich ihrer bewusst zu sein. Immer wenn das Zeichen ">" in einem Befehl oder "|" verwendet wurde so wurde eine Umleitung bzw. eine Pipe verwendet.
Auf allen Unix-ähnlichen Betriebssystemen wie Linux und FreeBSD geht die Ausgabe eines Kommandozeilenprogramms automatisch an eine Stelle, die als Standardausgabe (stdout) bekannt ist. Standardmäßig ist die Standardausgabe der Bildschirm (die Konsole), kann jedoch mit Pipes und Umleitung geändert werden. Ebenso gilt die Tastatur als Standardeingabe (stdin) und kann wie die Standardausgabe geändert werden.
Rohre
Pipes ermöglichen es Ihnen, die Ausgabe von einem Befehl zu einem anderen umzuleiten, wo sie als Eingabe verwendet wird. Mit anderen Worten, die Standardausgabe eines Programms wird zur Standardeingabe eines anderen.
Der Befehl "more" nimmt die Standardeingabe und die Seite auf der Standardausgabe (dem Bildschirm). Das bedeutet, dass, wenn ein Befehl mehr Informationen anzeigt, als auf einem Bildschirm angezeigt werden können, das "Plus"-Programm nach dem ersten Vollbild (Seite) anhält und darauf wartet, dass der Benutzer die Leertaste drückt, um die nächste Seite anzuzeigen, oder ENTER, um die nächste Seite anzuzeigen Leitung.
Hier ist ein Beispiel, das alle Dateien mit Details (-la) im Verzeichnis /dev auflistet und die Ausgabe auf weitere umleitet. Das Verzeichnis /dev sollte Dutzende von Dateien enthalten und somit sicherstellen, dass mehr Paging erforderlich ist.
ls -la /dev | más
Beachten Sie die Anzeige -Andere- am unteren Bildschirmrand. Drücken Sie die Leertaste, um die nächste Seite anzuzeigen, und halten Sie die Leertaste gedrückt, bis die Ausgabe abgeschlossen ist.
Hier ist ein weiteres Pipeline-Beispiel, diesmal mit dem Tool "wc" (Wortzählung).
ls -1 /dev | wc
wc zählt die Anzahl der Zeilen, Wörter und Zeichen in der Standardeingabe. Die Verwendung des Parameters -l zeigt nur die Anzahl der Zeilen an, was eine gute Möglichkeit ist, um zu sehen, wie viele Dateien sich in einem Verzeichnis befinden.
Das Tutorial Tauchen Sie ein in die Linux-Archiv- und Komprimierungsbefehle hat 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 die Standardausgabe und nicht an eine Datei zu senden. Die tar-Ausgabe wird mit 7zr durch die Röhre geleitet, die aufgrund der Option -si auf die Standardeingabe wartet.
Weiterleitung
Die Umleitung ähnelt der für Pipes, außer dass die Dateien anstelle eines anderen Programms verwendet werden. Die Standardausgabe eines Programms ist der Bildschirm. Mit dem Symbol > (größer als) können Sie die Ausgabe eines Programms in eine Datei schicken. Hier ist wieder eine Verzeichnisauflistung von /dev, aber diesmal umgeleitet auf eine Datei namenslisting.txt
ls -la> listado.txt
Im Terminal wird nichts angezeigt, da alles an die Datei gesendet wurde. Sie können sich die Datei mit dem Befehl cat ansehen (der in more eingegeben werden kann) oder der Einfachheit halber den Befehl more allein verwenden:
más listing.txt
Wenn die Dateilisting.txt bereits vorhanden war, wird sie überschrieben. Sie können jedoch mit >>> wie folgt zu einer vorhandenen Datei hinzufügen:
ls -la /home> listing.txt ls -la /dev>> listing.txt
Die erste Weiterleitung überschreibt die Datei list.txt, während die zweite sie hinzufügt.
Der Befehl cat kann verwendet werden, um eine Datei mit Umleitung zu erstellen, zum Beispiel:
cat> atextfile.txt
Jetzt wird der von Ihnen eingegebene Text an die Datei atextfile.txt gesendet, bis Sie Strg-D drücken. An diesem Punkt wird die Datei geschlossen und Sie kehren zur Befehlszeile zurück. Wenn Sie der Datei mehr Text hinzufügen möchten, verwenden Sie denselben Befehl, jedoch mit zwei größeren als-Zeichen (>>).
Fazit
Viele der Linux-Befehlszeilenprogramme sind so konzipiert, dass sie mit Umleitungen und Pipes arbeiten, experimentieren Sie damit und sehen Sie, wie sie interagieren. Beispielsweise kann die Ausgabe des Befehls ps, die die aktuellen Prozesse auflistet, an grep umgeleitet werden. Sehen Sie, ob Sie herausfinden können, wie Sie Prozesse auflisten können, die sich im Besitz von root befinden.
Schreibe einen Kommentar