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.
najít můj iphone android
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ů.
pevná vazba versus brožovaná vazba
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:
ve kterém roce byl vynalezen počítač
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.