Eine Pipe ist eine Form der Umleitung (Übertragung der Standardausgabe an ein anderes Ziel), die in Linux und anderen Unix-ähnlichen Betriebssystemen verwendet wird, um die Ausgabe eines Befehls/Programms/Prozesses zur weiteren Verarbeitung an einen anderen Befehl/Programm/Prozess zu senden . Die Unix/Linux-Systeme ermöglichen die Verbindung der Standardausgabe eines Befehls mit der Standardausgabe eines anderen Befehls. Sie können dies erreichen, indem Sie das Pipe-Zeichen verwenden '|' .
Die Pipe wird verwendet, um zwei oder mehr Befehle zu kombinieren. Dabei fungiert die Ausgabe eines Befehls als Eingabe für einen anderen Befehl, und die Ausgabe dieses Befehls kann als Eingabe für den nächsten Befehl usw. dienen. Es kann auch als temporäre Verbindung zwischen zwei oder mehr Befehlen/Programmen/Prozessen visualisiert werden. Die Kommandozeilenprogramme, die die weitere Verarbeitung übernehmen, werden als Filter bezeichnet.
Diese direkte Verbindung zwischen Befehlen/Programmen/Prozessen ermöglicht den gleichzeitigen Betrieb und ermöglicht die kontinuierliche Übertragung von Daten zwischen ihnen, anstatt sie über temporäre Textdateien oder den Bildschirm weiterleiten zu müssen.
Rohre sind unidirektional, d. h. Daten fließen von links nach rechts durch die Pipeline.
Syntax:
command_1 | command_2 | command_3 | .... | command_N>
Beispiel für Piping unter Unix oder Linux
1. Listen Sie alle Dateien und Verzeichnisse auf und geben Sie sie mithilfe von Piping unter Linux als Eingabe für den Befehl „grep“ ein
ls | grep file.txt>
ls | grep-Datei.txt
In diesem ersten Fall verwenden wir „ls“, um alle Dateien und Verzeichnisse im aktuellen Verzeichnis aufzulisten, übergeben dann die Ausgabe an den Befehl „grep“ und suchen nach dem Dateinamen „file.txt“. Die Ausgabe des Befehls ls wird an die Eingabe des Befehls grep gesendet und das Ergebnis ist eine Liste von Dateien, die dem Suchbegriff entsprechen.
2. Listen Sie alle Dateien und Verzeichnisse auf und geben Sie sie mithilfe von Piping unter Linux als Eingabe für „more“-Befehle ein.
$ ls -l | more>
$ ls -l | mehr
Der Befehl more verwendet die Ausgabe von $ ls -l als Eingabe. Der Nettoeffekt dieses Befehls besteht darin, dass die Ausgabe von ls -l bildschirmweise angezeigt wird. Die Pipe fungiert als Container, der die Ausgabe von ls -l aufnimmt und als Eingabe an more weitergibt. Dieser Befehl verwendet keine Festplatte, um die Standardausgabe von ls -l mit der Standardeingabe von more zu verbinden, da Pipe im Hauptspeicher implementiert ist.
In Bezug auf E/A-Umleitungsoperatoren entspricht der obige Befehl der folgenden Befehlssequenz.
$ ls -l ->temp mehr -> temp (oder mehr temp) [Inhalt von temp] rm temp>Temp
ls -l -> temp
Listen-Port
Die Ausgabe der beiden oben genannten Befehle ist dieselbe.
3. Sortieren Sie eine Liste von Dateien nach Größe mithilfe von Piping unter Linux
ls -l sort -k 5>ls -l sort -k 5
Dieser Befehl listet alle Dateien im aktuellen Verzeichnis auf und verwendet dann den Befehl „sort“, um die Liste nach der fünften Spalte zu sortieren, die die Dateigröße darstellt.
4. Verwenden Sie die Befehle sort und uniq, um eine Datei zu sortieren und eindeutige Werte mithilfe von Piping unter Linux zu drucken
$ sort record.txt | uniq>
Dadurch wird die angegebene Datei sortiert und nur die eindeutigen Werte gedruckt.
Java-Grundlagen
sortieren Sie record.txt | einzigartig
5. Verwenden Sie head und tail, um Zeilen in einem bestimmten Bereich in einer Datei zu drucken.
$ cat sample2.txt | head -7 | tail -5>
Dieser Befehl wählt die ersten 7 Zeilen bis zum Befehl (head -7) aus und diese werden in den Befehl (tail -5) eingegeben, der schließlich die letzten 5 Zeilen dieser 7 Zeilen druckt.
cat sample2.txt | Kopf -7 | Schwanz -5
6. Verwenden Sie ls und find, um alle Zeilen aufzulisten und auszudrucken, die einem bestimmten Muster in passenden Dateien entsprechen.
$ ls -l | find ./ -type f -name '*.txt' -exec grep 'program' {} ;> Dieser Befehl wählt Dateien mit aus .txt Erweiterung im angegebenen Verzeichnis und sucht nach Mustern wie „Programm“ im obigen Beispiel und gibt diejenigen aus, die „Programm“ enthalten.
ls -l | find ./ -type f -name *.txt -exec grep program {} ;
7. Verwenden Sie die Befehle cat, grep, tee und wc, um den jeweiligen Eintrag vom Benutzer zu lesen, ihn in einer Datei zu speichern und die Zeilenanzahl auszudrucken.
$ cat result.txt | grep 'Rajat Dua' | tee file2.txt | wc -l>
Dieser Befehl wählt aus Rajat Dua und speichern Sie sie in file2.txt und geben Sie die Gesamtzahl der übereinstimmenden Zeilen aus Rajat Dua
cat result.txt | grep Rajat Dua | tee file2.txt | wc -l
8.Wie kann ich die Ausgabe eines weitergeleiteten Befehls in eine Datei unter Unix oder Linux umleiten?
Wir können den Umleitungsoperator „>“ verwenden, um die Ausgabe eines weitergeleiteten Befehls umzuleiten.
Zum Beispiel:
Wenn ich einen Dateinamen „file.txt“ habe und ihn in einen Dateinamen „geeks.txt“ umleiten möchte.
ls | grep 'file'>geeks.txt>geeks.txt
ls | grep ‚file‘> geeks.txt
Abschluss
Piping ist eine leistungsstarke Funktion in Unix- und Linux-Betriebssystemen, die uns hilft, verschiedene Befehle miteinander zu verknüpfen, um komplexe Aufgaben schnell und effizient auszuführen. In diesem Artikel haben wir erfahren, wie wir die Ausgabe eines Befehls auf die Eingabe eines anderen Befehls umleiten können. Insgesamt können wir sagen, dass wir durch den Einsatz von Rohrleitungen Zeit sparen, die Produktivität steigern und den Speicherplatzverbrauch reduzieren können.