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.