Potrubí v Unixu nebo Linuxu

Roura je forma přesměrování (přenos standardního výstupu na nějaké jiné místo), která se používá v Linuxu a dalších operačních systémech podobných Unixu k odeslání výstupu jednoho příkazu/programu/procesu do jiného příkazu/programu/procesu k dalšímu zpracování. . Systémy Unix/Linux umožňují připojení stdout příkazu k stdin jiného příkazu. Můžete to udělat pomocí znaku potrubí '|' .

Roura se používá ke kombinaci dvou nebo více příkazů a v tomto případě výstup jednoho příkazu funguje jako vstup pro jiný příkaz a výstup tohoto příkazu může fungovat jako vstup pro další příkaz atd. Lze jej také zobrazit jako dočasné spojení mezi dvěma nebo více příkazy/programy/procesy. Programy příkazového řádku, které provádějí další zpracování, se označují jako filtry.

Toto přímé spojení mezi příkazy/programy/procesy jim umožňuje pracovat současně a umožňuje nepřetržitý přenos dat mezi nimi, aniž by je museli předávat dočasnými textovými soubory nebo přes obrazovku.
Potrubí je jednosměrné, tzn. data proudí potrubím zleva doprava.

Syntax:

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

Příklad Piping v Unixu nebo Linuxu

1. Vypište všechny soubory a adresáře a zadejte je jako vstup příkazu `grep` pomocí potrubí v Linuxu

ls | grep file.txt 

ls | grep soubor.txt

Nejprve používáme `ls` k vypsání všech souborů a adresářů v aktuálním adresáři, poté předáme jeho výstup příkazu `grep` a hledáme název souboru `file.txt`. Výstup příkazu ls je odeslán na vstup příkazu grep a výsledkem je seznam souborů, které odpovídají hledanému výrazu.

2. Vypište všechny soubory a adresáře a zadejte je jako vstup pro příkazy `more` pomocí potrubí v Linuxu.

$ ls -l | more 

$ ls -l | více

Příkaz more bere jako vstup výstup $ ls -l. Čistým účinkem tohoto příkazu je, že výstup ls -l je zobrazen po jedné obrazovce. Potrubí funguje jako zásobník, který přebírá výstup ls -l a dává jej více jako vstup. Tento příkaz nepoužívá disk k připojení standardního výstupu ls -l ke standardnímu vstupu more, protože roura je implementována v hlavní paměti.
Z hlediska operátorů přesměrování I/O je výše uvedený příkaz ekvivalentní následující posloupnosti příkazů.

$ ls -l ->temp more -> temp (nebo more temp) [obsah temp] rm temp 
tepl

ls -l -> tepl

Výstup dvou výše uvedených příkazů je stejný.

3. Seřaďte seznam souborů podle velikosti pomocí potrubí v Linuxu

ls -l sort -k 5 
ls -l sort -k 5

Tento příkaz vypíše seznam všech souborů v aktuálním adresáři a poté pomocí příkazu `sort` seřadí seznam podle pátého sloupce, který představuje velikost souboru.

4. Použijte příkaz sort a uniq k třídění souboru a tisku jedinečných hodnot pomocí potrubí v Linuxu

$ sort record.txt | uniq 

Tím se daný soubor seřadí a vytisknou se pouze jedinečné hodnoty.

seřadit záznam.txt | unikátní

5. Použijte hlavu a konec k tisku čar v určitém rozsahu v souboru.

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

Tento příkaz vybere prvních 7 řádků pomocí příkazu (head -7) a to bude vstup do příkazu (tail -5), který nakonec vytiskne posledních 5 řádků z těchto 7 řádků.

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

6. Pomocí ls a find vypište a vytiskněte všechny řádky odpovídající určitému vzoru v odpovídajících souborech.

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

Tento příkaz vybere soubory s .txt rozšíření v daném adresáři a vyhledá vzory jako program ve výše uvedeném příkladu a vypíše ty, které obsahují program.

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

7. Použijte příkaz cat, grep, tee a wc k načtení konkrétní položky od uživatele a uložení do souboru a počtu řádků tisku.

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

Tento příkaz vybírá Rajat Dua a uložit je do souboru 2.txt a vytisknout celkový počet odpovídajících řádků Rajat Dua

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

8.Jak mohu přesměrovat výstup z pipetovaného příkazu do souboru v Unixu nebo Linuxu?

K přesměrování výstupu rourkovaného příkazu můžeme použít operátor přesměrování `>`.

Například:

Pokud mám název souboru `file.txt` a chci jej přesměrovat na název souboru `geeks.txt`.

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

ls | grep ‘soubor’> geeks.txt

Závěr

Piping je výkonná funkce v operačních systémech Unix a Linux, která nám pomáhá propojovat různé příkazy a provádět složité úkoly rychle a efektivně. V tomto článku jsme se naučili, jak můžeme přesměrovat výstup jednoho příkazu na vstup jiného příkazu. Celkově můžeme říci, že použitím potrubí můžeme ušetřit čas, zvýšit produktivitu a snížit využití místa na disku.