logo

Piping v Unixe alebo Linuxe

Rúra je forma presmerovania (prenos štandardného výstupu do iného cieľa), ktorá sa používa v Linuxe a iných operačných systémoch podobných Unixu na odoslanie výstupu jedného príkazu/programu/procesu do iného príkazu/programu/procesu na ďalšie spracovanie. . Systémy Unix/Linux umožňujú pripojenie stdout príkazu k stdin iného príkazu. Môžete to urobiť pomocou znaku potrubia '|' .

Rúra sa používa na spojenie dvoch alebo viacerých príkazov a v tomto prípade výstup jedného príkazu funguje ako vstup pre iný príkaz a výstup tohto príkazu môže fungovať ako vstup pre ďalší príkaz atď. Môže sa tiež zobraziť ako dočasné spojenie medzi dvoma alebo viacerými príkazmi/programami/procesmi. Programy príkazového riadku, ktoré vykonávajú ďalšie spracovanie, sa označujú ako filtre.



Toto priame prepojenie medzi príkazmi/programami/procesmi im umožňuje pracovať súčasne a umožňuje nepretržitý prenos údajov medzi nimi, namiesto toho, aby ich museli prenášať cez dočasné textové súbory alebo cez obrazovku.
Rúry sú jednosmerné, tj. dáta prúdia zľava doprava cez potrubie.

Syntax:

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

Príklad Piping v Unixe alebo Linuxe

1. Vypíšte všetky súbory a adresáre a zadajte ich ako vstup do príkazu `grep` pomocou potrubia v Linuxe

ls | grep file.txt>

ls | grep súbor.txt



vytvorte spustiteľný skript sh

Najprv použijeme `ls` na vypísanie všetkých súborov a adresárov v aktuálnom adresári, potom odošleme jeho výstup príkazu `grep` a vyhľadáme názov súboru `file.txt`. Výstup príkazu ls sa odošle na vstup príkazu grep a výsledkom je zoznam súborov, ktoré zodpovedajú hľadanému výrazu.

xor c++

2. Uveďte zoznam všetkých súborov a adresárov a zadajte ich ako vstup pre príkazy `more` pomocou piping v Linuxe.

$ ls -l | more>

$ ls -l | viac

Príkaz more berie ako vstup výstup $ ls -l. Čistým efektom tohto príkazu je, že výstup ls -l sa zobrazuje po jednej obrazovke. Potrubie funguje ako kontajner, ktorý odoberá výstup ls -l a dáva ho viac ako vstup. Tento príkaz nepoužíva disk na pripojenie štandardného výstupu ls -l k štandardnému vstupu more, pretože pipe je implementovaná v hlavnej pamäti.
Pokiaľ ide o operátory presmerovania I/O, vyššie uvedený príkaz je ekvivalentný nasledujúcej sekvencii príkazov.



$ ls -l ->temp viac -> temp (alebo viac temp) [obsah temp] rm temp>
tepl

ls -l -> tep

Výstup dvoch vyššie uvedených príkazov je rovnaký.

3. Zoraďte zoznam súborov podľa veľkosti pomocou potrubia v systéme Linux

ls -l sort -k 5>
ls -l zoradiť -k 5

urobiť skript shellu spustiteľný

Tento príkaz zobrazí zoznam všetkých súborov v aktuálnom adresári a potom použije príkaz `sort` na zoradenie zoznamu podľa piateho stĺpca, ktorý predstavuje veľkosť súboru.

4. Pomocou príkazu sort a uniq zoraďte súbor a vytlačte jedinečné hodnoty pomocou potrubia v systéme Linux

$ sort record.txt | uniq>

Tým sa zoradí daný súbor a vytlačia sa iba jedinečné hodnoty.

triediť záznam.txt | jedinečný

5. Použite hlavu a koniec na tlač čiar v určitom rozsahu v súbore.

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

Tento príkaz vyberie prvých 7 riadkov prostredníctvom príkazu (head -7) a tie budú vstupom do príkazu (tail -5), ktorý nakoniec vytlačí posledných 5 riadkov z týchto 7 riadkov.

cat sample2.txt | hlava -7 | chvost -5

6. Pomocou ls a find zobrazíte a vytlačíte všetky riadky zodpovedajúce konkrétnemu vzoru v zodpovedajúcich súboroch.

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

Tento príkaz vyberie súbory s .TXT rozšírenie v danom adresári a vyhľadá vzory ako program vo vyššie uvedenom príklade a vypíše tie, ktoré obsahujú program.

ls -l | nájdi ./ -type f -name *.txt -exec grep program {} ;

7. Použite príkazy cat, grep, tee a wc na prečítanie konkrétnej položky od používateľa a uloženie do súboru a počtu riadkov tlače.

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

Tento príkaz vyberá Rajat Dua a uložiť ich do súboru 2.txt a vytlačiť celkový počet zodpovedajúcich riadkov Rajat Dua

mačka výsledok.txt | grep Rajat Dua | tee file2.txt | wc -l

mylivecricket v

8.Ako môžem presmerovať výstup z pipetovaného príkazu do súboru v Unixe alebo Linuxe?

Na presmerovanie výstupu prepojeného príkazu môžeme použiť operátor presmerovania `>`.

Napríklad:

dopredné reťazenie

Ak mám názov súboru `file.txt` a chcem ho presmerovať na názov súboru `geeks.txt`.

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

ls | grep ‘súbor’> geeks.txt

Záver

Piping je výkonná funkcia v operačných systémoch Unix a Linux, ktorá nám pomáha spájať rôzne príkazy a vykonávať zložité úlohy rýchlo a efektívne. V tomto článku sme sa naučili, ako môžeme presmerovať výstup jedného príkazu na vstup iného príkazu. Celkovo môžeme povedať, že použitím potrubia môžeme ušetriť čas, zvýšiť produktivitu a znížiť využitie miesta na disku.