logo

Piping in Unix of Linux

Een pipe is een vorm van omleiding (overdracht van standaarduitvoer naar een andere bestemming) die wordt gebruikt in Linux en andere Unix-achtige besturingssystemen om de uitvoer van een opdracht/programma/proces naar een ander commando/programma/proces te sturen voor verdere verwerking . De Unix/Linux-systemen staan ​​toe dat de stdout van een commando wordt verbonden met de stdin van een ander commando. U kunt dit doen door het pipe-teken te gebruiken '|' .

De pipe wordt gebruikt om twee of meer commando's te combineren, en hierbij fungeert de uitvoer van het ene commando als invoer voor een ander commando, en de uitvoer van dit commando kan fungeren als invoer voor het volgende commando, enzovoort. Het kan ook worden gevisualiseerd als een tijdelijke verbinding tussen twee of meer opdrachten/programma's/processen. De opdrachtregelprogramma's die de verdere verwerking uitvoeren, worden filters genoemd.



javascript trimmen

Deze directe verbinding tussen commando's/programma's/processen zorgt ervoor dat ze gelijktijdig kunnen werken en dat gegevens continu tussen de commando's kunnen worden overgedragen in plaats van dat ze via tijdelijke tekstbestanden of via het beeldscherm moeten worden doorgegeven.
Leidingen zijn unidirectioneel, d.w.z. gegevens stromen van links naar rechts door de pijplijn.

Syntaxis:

command_1 | command_2 | command_3 | .... | command_N>

Voorbeeld van piping in Unix of Linux

1. Maak een lijst van alle bestanden en mappen en geef ze als invoer voor het commando `grep` met behulp van piping in Linux

ls | grep file.txt>

ls | grep-bestand.txt



In deze eerste fase gebruiken we `ls` om alle bestanden en mappen in de huidige map weer te geven, waarna we de uitvoer ervan doorgeven aan het commando `grep` en zoeken naar de bestandsnaam `file.txt`. De uitvoer van het ls-commando wordt naar de invoer van het grep-commando gestuurd en het resultaat is een lijst met bestanden die overeenkomen met de zoekterm.

2. Maak een lijst van alle bestanden en mappen en geef ze als invoer voor `more`-opdrachten met behulp van piping in Linux.

$ ls -l | more>

$ ls-l | meer

Het commando more neemt de uitvoer van $ ls -l als invoer. Het netto-effect van deze opdracht is dat de uitvoer van ls -l scherm voor scherm wordt weergegeven. De pipe fungeert als een container die de uitvoer van ls -l opneemt en deze als invoer aan meer geeft. Deze opdracht gebruikt geen schijf om de standaarduitvoer van ls -l te verbinden met de standaardinvoer van more, omdat pipe in het hoofdgeheugen is geïmplementeerd.
In termen van I/O-omleidingsoperatoren is de bovenstaande opdracht gelijk aan de volgende opdrachtenreeks.



$ ls -l ->temp meer -> temp (of meer temp) [inhoud van temp] rm temp>
temperatuur

ls -l -> temperatuur

De uitvoer van de bovenstaande twee opdrachten is hetzelfde.

3. Sorteer een lijst met bestanden op grootte met behulp van piping in Linux

ls -l sort -k 5>
ls -l sorteer -k 5

Deze opdracht geeft een overzicht van alle bestanden in de huidige map en gebruikt vervolgens de opdracht `sort` om de lijst te sorteren op de vijfde kolom, die de bestandsgrootte weergeeft.

4. Gebruik de opdracht sort en uniq om een ​​bestand te sorteren en unieke waarden af ​​te drukken met behulp van piping in Linux

$ sort record.txt | uniq>

Hierdoor wordt het opgegeven bestand gesorteerd en worden alleen de unieke waarden afgedrukt.

sorteer record.txt | uniek

Hoe tekenreeks naar char te converteren

5. Gebruik kop en staart om lijnen in een bepaald bereik in een bestand af te drukken.

$ cat sample2.txt | head -7 | tail -5>

Dit commando selecteert de eerste 7 regels via het commando (head -7) en dat wordt ingevoerd in het commando (tail -5), dat uiteindelijk de laatste 5 regels van die 7 regels zal afdrukken.

kat monster2.txt | hoofd -7 | staart -5

6. Gebruik ls en find om alle lijnen die overeenkomen met een bepaald patroon in overeenkomende bestanden weer te geven en af ​​te drukken.

$ ls -l | find ./ -type f -name '*.txt' -exec grep 'program' {} ;>

Met deze opdracht selecteert u bestanden met .tekst extensie in de gegeven map en zoekt naar patronen zoals het programma in het bovenstaande voorbeeld en drukt de patronen af ​​die een programma bevatten.

ls -l | find ./ -type f -naam *.txt -exec grep-programma {} ;

7. Gebruik de commando's cat, grep, tee en wc om het specifieke item van de gebruiker te lezen en in een bestand op te slaan en het aantal regels af te drukken.

$ cat result.txt | grep 'Rajat Dua' | tee file2.txt | wc -l>

Deze opdracht selecteert Rajat Dua en sla ze op in file2.txt en druk het totale aantal overeenkomende regels af Rajat Dua

lokale datum

kat resultaat.txt | grep Rajat Dua | tee-bestand2.txt | wc -l

8.Hoe kan ik de uitvoer van een doorgesluisd commando omleiden naar een bestand in Unix of Linux?

We kunnen de omleidingsoperator `>` gebruiken om de uitvoer van een doorgesluisd commando om te leiden.

Bijvoorbeeld:

Als ik de bestandsnaam `file.txt` heb en deze wil omleiden naar de bestandsnaam `geeks.txt`.

 ls | grep 'file'>geeks.txt>
geeks.txt

ls | grep ‘bestand’> geeks.txt

Conclusie

Piping is een krachtige functie in Unix- en Linux-besturingssystemen die ons helpt verschillende opdrachten aan elkaar te koppelen om complexe taken snel en efficiënt uit te voeren. In dit artikel hebben we geleerd hoe we de uitvoer van het ene commando kunnen omleiden naar de invoer van een ander commando. Over het geheel genomen kunnen we zeggen dat we door het gebruik van piping tijd kunnen besparen, de productiviteit kunnen verbeteren en het gebruik van schijfruimte kunnen verminderen.