Linux Pipe -Befehl

Linux Pipe -Befehl
Dieser Befehl „Pipe“ ist auf UNIX/Linux -Plattformen leicht verfügbar. Dieser Befehl verlegt die Ausgabe des vorherigen Befehls zum nächsten Befehl. Es gibt buchstäblich unzählige Situationen, in denen diese Methode einen ernsthaften Wert bietet.Bevor Sie tiefer springen, gibt es etwas zu wissen zu wissen. Jedes einzelne Programm im UNIX/Linux-System verfügt über 3 integrierte Datenströme.
  • Stdin (0) - Standardeingang
  • Stdout (1) - Standardausgabe
  • Stderr (2) - Standardfehler

Wenn wir mit „Pipe“ -Trips arbeiten, wird „Pipe“ den STDOut eines Befehls nimmt und es an den Stdin des nächsten Befehls weitergibt.

Schauen wir uns einige der häufigsten Möglichkeiten an, wie Sie den Befehl „Rohr“ in Ihre tägliche Verwendung integrieren können.

Rohrbefehl

Grundnutzung

Es ist besser, mit einem Live? Lass uns anfangen. Der folgende Befehl zeigt „Pacman“, den Standardpaket-Manager für Arch und alle Arch-basierten Distribos, alle installierten Pakete auf dem System auszudrucken.

Pacman -qqe

Es ist eine wirklich lange Liste von Paketen. Wie, nur wenige Komponenten aufzunehmen? Wir könnten "Grep" verwenden. Aber wie? Eine Möglichkeit würde darin bestehen, die Ausgabe in eine temporäre Datei zu werfen, die gewünschte Ausgabe zu „grep“ und die Datei löschen. Diese Reihe von Aufgaben kann selbst in ein Skript verwandelt werden. Aber wir skribieren nur für sehr große Dinge. Für diese Aufgabe rufen wir die Kraft von „Pfeife“ an,!

Pacman -qqe | Grep

Genial, nicht wahr?? Das "|" Das Zeichen ist der Anruf zum Befehl "Pipe". Es greift den Stdout aus dem linken Abschnitt und füttert ihn in das Stdin des rechten Abschnitts.

Im oben genannten Beispiel hat der Befehl „Pipe“ die Ausgabe am Ende des "Grep" -Teils tatsächlich überholt. So spielt es sich aus.

pacman -qqe> ~/desktop/pacman_package.txt
grep python ~/desktop/pacman_package.txt

Mehrere Rohrleitungen

Grundsätzlich gibt es nichts Besonderes mit der fortgeschrittenen Verwendung des Befehls „Pipe“. Es liegt ganz bei Ihnen, wie man es benutzt.

Beginnen wir zum Beispiel mit mehreren Rohrleitungen.

Pacman -qqe | grep p | grep t | Grep Py

Die Pacman -Befehlsausgabe wird durch eine Reihe von Rohrleitungen immer weiter und weiter durch „Grep“ gefiltert.

Manchmal, wenn wir mit dem Inhalt einer Datei arbeiten, kann es wirklich sehr, sehr groß sein. Es kann schwierig sein, den richtigen Ort unseres gewünschten Eintrags zu finden. Suchen wir nach allen Einträgen, die Ziffern 1 und 2 enthalten.

Katzendemo.txt | Grep -n 1 | Grep -n 2

Manipulieren Sie die Liste von Dateien und Verzeichnissen

Was tun, wenn Sie mit einem Verzeichnis mit Tonnen von Dateien zu tun haben? Es ist ziemlich ärgerlich, durch die gesamte Liste zu scrollen. Sicher, warum nicht mit Rohr erträglicher machen? Schauen wir uns in diesem Beispiel die Liste aller Dateien im Ordner "/usr/Bin" an.

ls -l | mehr

Hier druckt „LS“ alle Dateien und ihre Informationen. Dann übergeht „Rohr“ es an „mehr“, um damit zu arbeiten. Wenn Sie nicht wussten, ist „mehr“ ein Tool, das Texte gleichzeitig in eine Bildschirmansicht verwandelt. Es handelt sich jedoch um ein altes Werkzeug, und laut offizieller Dokumentation wird „weniger“ empfohlener.

ls -l /usr /bin | weniger

Sortierleistung

Es gibt ein integriertes Werkzeug „Sortier“. Dieses Tool ist ein echtes Juwel, wenn Sie mit etwas wirklich Unordentlichem arbeiten. Zum Beispiel habe ich diese Datei voller zufälliger Zeichenfolgen erhalten.

Katzendemo.txt

Pfeifen Sie es einfach, um zu "sortieren".

Katzendemo.txt | Sortieren

Das ist besser!

Druckübereinstimmungen eines bestimmten Musters

ls -l | finden ./ -typ f -name "**.txt "-exec grep 00110011 \;

Dies ist ein ziemlich verdrehter Befehl, richtig? Zuerst gibt „LS“ die Liste aller Dateien im Verzeichnis aus. Das "Find" -Tool nimmt die Ausgabe und sucht nach “.TXT ”-Dateien und Beschwören„ Grep “, um nach„ 00110011 “zu suchen. In diesem Befehl werden jede einzelne Textdatei im Verzeichnis mit der TXT -Erweiterung überprüft und nach den Übereinstimmungen suchen.

Dateiinhalt eines bestimmten Bereichs drucken

Wenn Sie mit einer großen Datei arbeiten, ist es üblich, den Inhalt eines bestimmten Bereichs zu überprüfen. Wir können genau das mit einer cleveren Kombination aus "Katze", "Kopf", "Schwanz" und natürlich "Pipe" machen. Das "Kopf" -Tool gibt den ersten Teil eines Inhalts aus und "Schwanz" gibt den letzten Teil aus.

Katze | Kopf -6
Katze | Schwanz -6

Eindeutige Werte

Bei der Arbeit mit doppelten Ausgängen kann es ziemlich ärgerlich sein. Manchmal kann doppelte Eingaben schwerwiegende Probleme verursachen. Lassen Sie uns in diesem Beispiel "Uniq" in einen Textstrom werfen und in eine separate Datei speichern.

Hier ist beispielsweise eine Textdatei mit einer großen Liste von Zahlen, die 2 Ziffern lang sind. Hier gibt es definitiv doppelte Inhalte, richtig?

Katzen duplizieren.txt | Sortieren

Führen Sie nun den Filterprozess durch.

Katzen duplizieren.txt | sortieren | Uniq> einzigartig.txt

Schauen Sie sich die Ausgabe an.

Fledermaus einzigartig.txt

Sieht besser aus!

Fehlerleitungen

Dies ist eine interessante Rohrmethode. Diese Methode wird verwendet, um das Stderr auf Stdout umzuleiten und mit der Rohrleitungen fortzufahren. Dies wird durch „| &“ -Symbol bezeichnet (ohne die Zitate). Lassen Sie uns beispielsweise einen Fehler erstellen und die Ausgabe an ein anderes Tool senden. In diesem Beispiel habe ich gerade einen zufälligen Befehl eingegeben und den Fehler an "Grep" übergeben.

adsfds | & grep n

Abschließende Gedanken

Während „Pipe“ selbst ziemlich simpel ist, bietet die Art und Weise, wie es arbeitet. Wenn Sie sich mit Bash -Skripting interessieren, ist es viel nützlicher. Manchmal können Sie einfach verrückte Dinge sofort tun! Erfahren Sie mehr über Bash Scripting.