- STDIN (0) - standardní vstup
- STDOUT (1) - standardní výstup
- STDERR (2) - standardní chyba
Když budeme pracovat s triky „pipe“, „pipe“ vezme STDOUT příkazu a předá jej STDIN dalšího příkazu.
Podívejme se na některé z nejběžnějších způsobů, jak můžete začlenit příkaz „pipe“ do svého každodenního používání.
Příkaz potrubí
Základní použití
Je lepší rozvinout pracovní metodu „dýmky“ živým příkladem, že? Začněme. Následující příkaz řekne „pacman“, výchozímu správci balíků pro Arch a všechna distribuce na bázi Arch, aby vytiskl všechny nainstalované balíčky v systému.
pacman -Qqe
Je to opravdu DLOUHÝ seznam balíčků. Jak, o vyzvednutí jen několika komponent? Mohli bychom použít „grep“. Ale jak? Jedním ze způsobů by bylo vyhodit výstup do dočasného souboru, „pozdravit“ požadovaný výstup a soubor smazat. Tato řada úkolů sama o sobě může být přeměněna na skript. Skriptujeme ale pouze pro velmi velké věci. Pro tento úkol využijeme sílu „potrubí“!
pacman -Qqe | grep
Úžasné, že?? „|“ sign je volání příkazu „pipe“. Chytí STDOUT z levé části a přivádí ji do STDIN pravé části.
Ve výše uvedeném příkladu příkaz „pipe“ ve skutečnosti předal výstup na konci části „grep“. Zde je ukázka, jak se hraje.
pacman -Qqe> ~ / Desktop / pacman_package.txtgrep python ~ / Desktop / pacman_package.txt
Více potrubí
V zásadě na pokročilém použití příkazu „pipe“ není nic zvláštního. Je zcela na vás, jak jej použijete.
Začněme například stohováním více potrubí.
pacman -Qqe | grep p | grep t | grep py
Výstup příkazu pacman je filtrován dále a dále pomocí „grep“ přes řadu piping.
Někdy, když pracujeme s obsahem souboru, může být opravdu, opravdu velký. Najít správné místo našeho požadovaného vstupu může být obtížné. Vyhledejme všechny položky, které obsahují číslice 1 a 2.
demo kočky.txt | grep -n 1 | grep -n 2
Manipulace se seznamem souborů a adresářů
Co dělat, když máte co do činění s adresářem, v němž je TONS souborů? Je docela nepříjemné procházet celým seznamem. Jistě, proč to s trubkou nesnesete? V tomto příkladu se podívejme na seznam všech souborů ve složce „/ usr / bin“.
je -l
Zde „ls“ vytiskne všechny soubory a jejich informace. Potom „potrubí“ předá „více“, aby s tím mohl pracovat. Pokud jste nevěděli, „více“ je nástroj, který proměňuje texty v jedno zobrazení obrazovky najednou. Je to však starý nástroj a podle oficiální dokumentace se doporučuje „méně“.
ls -l / usr / bin | méně
Výstup třídění
K dispozici je vestavěný nástroj „třídění“, který provede zadávání textu a roztřídí je. Tento nástroj je opravdovým klenotem, pokud pracujete s něčím opravdu špinavým. Například mám tento soubor plný náhodných řetězců.
demo kočky.txt
Jen to dejte do „třídění“.
demo kočky.txt | třídit
To je lepší!
Tisk shody konkrétního vzoru
ls -l | nalézt ./ -typ f -jméno "*.txt "-exec grep 00110011 \;
Toto je docela zkroucený příkaz, správně? Nejprve „ls“ vypíše seznam všech souborů v adresáři. Nástroj „najít“ vezme výstup, vyhledá „.txt ”soubory a předvolání„ grep “k vyhledání„ 00110011 “. Tento příkaz zkontroluje každý textový soubor v adresáři s příponou TXT a hledá shody.
Vytiskněte obsah souboru určitého rozsahu
Když pracujete s velkým souborem, je běžné mít potřebu kontrolovat obsah určitého rozsahu. Můžeme to udělat pomocí chytré kombinace „kočky“, „hlavy“, „ocasu“ a samozřejmě „dýmky“. Nástroj „head“ vydává první část obsahu a „ocas“ vydává poslední část.
kočkakočka
Jedinečné hodnoty
Při práci s duplicitními výstupy to může být docela nepříjemné. Někdy může duplicitní vstup způsobit vážné problémy. V tomto příkladu vrhneme „uniq“ na proud textu a uložíme jej do samostatného souboru.
Zde je například textový soubor obsahující velký seznam čísel, která mají 2 číslice. Určitě zde existuje duplicitní obsah, správně?
kočičí duplikát.txt | třídit
Nyní provedeme proces filtrování.
kočičí duplikát.txt | třídit | uniq> jedinečný.txt
Podívejte se na výstup.
netopýr jedinečný.txt
Vypadá lépe!
Chybné potrubí
Jedná se o zajímavou metodu potrubí. Tato metoda se používá k přesměrování STDERR na STDOUT a pokračování v potrubí. To je označeno symbolem „| &“ (bez uvozovek). Například vytvořme chybu a pošleme výstup nějakému jinému nástroji. V tomto příkladu jsem právě zadal nějaký náhodný příkaz a předal chybu „grep“.
adsfds | & grep n
Závěrečné myšlenky
I když je „potrubí“ samo o sobě velmi zjednodušující, způsob jeho fungování nabízí velmi univerzální způsob využití metody nekonečnými způsoby. Pokud máte rádi skriptování Bash, pak je to mnohem užitečnější. Někdy můžete prostě dělat šílené věci přímo! Další informace o skriptování Bash.