- STDIN (0) - štandardný vstup
- STDOUT (1) - štandardný výstup
- STDERR (2) - štandardná chyba
Keď budeme pracovať s trikami „pipe“, „pipe“ vezme STDOUT príkazu a odovzdá ho STDIN nasledujúceho príkazu.
Pozrime sa na niektoré z najbežnejších spôsobov, ako môžete začleniť príkaz „pipe“ do svojho každodenného používania.
Pipe príkaz
Základné použitie
Je lepšie rozpracovať pracovnú metódu „fajky“ na živom príklade, však? Začnime. Nasledujúci príkaz povie „pacman“, predvoleného správcu balíkov pre Arch a všetky distribúcie na báze Arch, aby vytlačil všetky nainštalované balíčky v systéme.
pacman -Qqe
Je to skutočne DLHÝ zoznam balíkov. Ako, o vyzdvihnutí iba niekoľkých komponentov? Mohli by sme použiť „grep“. Ale ako? Jedným zo spôsobov by bolo vyhodenie výstupu do dočasného súboru, „pozdravenie“ požadovaného výstupu a odstránenie súboru. Táto séria úloh sa dá sama o sebe zmeniť na skript. Skriptujeme však iba pre veľmi veľké veci. Pri tejto úlohe využime silu „fajky“!
pacman -Qqe | grep
Úžasné, že?? „|“ sign je volanie príkazu „pipe“. Chytí STDOUT z ľavej časti a napája ho do STDIN pravej časti.
V uvedenom príklade príkaz „pipe“ skutočne prešiel výstupom na konci časti „grep“. Takto sa to hrá.
pacman -Qqe> ~ / Desktop / pacman_package.TXTgrep python ~ / Desktop / pacman_package.TXT
Viacnásobné potrubie
V zásade nie je na pokročilom použití príkazu „pipe“ nič zvláštne. Je úplne na vás, ako ho použijete.
Začnime napríklad stohovaním viacerých potrubí.
pacman -Qqe | grep p | grep t | grep py
Výstup príkazu pacman je filtrovaný stále ďalej a ďalej „grep“ cez sériu potrubí.
Niekedy, keď pracujeme s obsahom súboru, môže byť skutočne, ale skutočne veľký. Nájsť správne miesto nášho požadovaného záznamu môže byť ťažké. Vyhľadajme všetky záznamy, ktoré obsahujú číslice 1 a 2.
ukážka mačky.txt | grep -n 1 | grep -n 2
Manipulácia so zoznamom súborov a adresárov
Čo robiť, keď máte do činenia s adresárom, v ktorom je TONS súborov? Je dosť nepríjemné listovať celým zoznamom. Iste, prečo to neurobiť s potrubím znesiteľnejším? V tomto príklade sa pozrime na zoznam všetkých súborov v priečinku „/ usr / bin“.
ls -l
Tu „ls“ vytlačí všetky súbory a ich informácie. Potom slovo „fajka“ odovzdá slovo „viac“, aby s tým mohol pracovať. Ak ste to nevedeli, „more“ je nástroj, ktorý premieňa texty na jedno zobrazenie súčasne. Je to však starý nástroj a podľa oficiálnej dokumentácie sa viac odporúča „menej“.
ls -l / usr / bin | menej
Výstup triedenia
Je tu zabudovaný nástroj na triedenie, ktorý prevezme zadávanie textu a triedi ich. Tento nástroj je skutočným klenotom, ak pracujete s niečím skutočne chaotickým. Napríklad som dostal tento súbor plný náhodných reťazcov.
ukážka mačky.TXT
Stačí to potrubím „roztriediť“.
ukážka mačky.txt | triediť
To je lepšie!
Tlač zápasov konkrétneho vzoru
ls -l | Nájsť ./ -typ f -name "*.txt "-exec grep 00110011 \;
Toto je pekne skrútený príkaz, že? Najskôr „ls“ vypíše zoznam všetkých súborov v adresári. Nástroj „nájsť“ vezme výstup, vyhľadá „.txt ”súbory a predvolanie„ grep “na vyhľadanie„ 00110011 “. Tento príkaz skontroluje každý jeden textový súbor v adresári s príponou TXT a vyhľadá zhody.
Vytlačte obsah súboru konkrétneho rozsahu
Ak pracujete s veľkým súborom, je bežné, že musíte skontrolovať obsah určitého rozsahu. To dokážeme pomocou šikovného komba „mačka“, „hlava“, „chvost“ a samozrejme „fajka“. Nástroj „head“ vydáva prvú časť obsahu a „chvost“ výstupnú časť.
katkat
Jedinečné hodnoty
Pri práci s duplicitnými výstupmi to môže byť pekne nepríjemné. Niekedy môže duplicitný vstup spôsobiť vážne problémy. V tomto príklade vložíme „uniq“ na prúd textu a uložíme ho do samostatného súboru.
Napríklad tu je textový súbor obsahujúci veľký zoznam čísel, ktoré majú 2 číslice. Tu určite existuje duplicitný obsah, že?
duplikát mačky.txt | triediť
Teraz vykonajme proces filtrovania.
duplikát mačky.txt | triediť | uniq> jedinečný.TXT
Skontrolujte výstup.
netopier jedinečný.TXT
Vyzerá lepšie!
Chybné potrubia
Toto je zaujímavá metóda potrubia. Táto metóda sa používa na presmerovanie STDERR na STDOUT a pokračovanie v potrubí. Toto je označené symbolom „| &“ (bez úvodzoviek). Napríklad vytvorme chybu a pošleme výstup do iného nástroja. V tomto príklade som práve napísal náhodný príkaz a chybu odovzdal „grep“.
adsfds | & grep n
Záverečné myšlienky
Aj keď je „potrubie“ samo o sebe dosť zjednodušujúce, spôsob jeho fungovania ponúka veľmi všestranný spôsob využitia tejto metódy nekonečným spôsobom. Ak sa venujete skriptovaniu v jazyku Bash, potom je to oveľa užitočnejšie. Niekedy môžete jednoducho robiť úplne šialené veci! Získajte viac informácií o skriptovaní Bash.