- STDIN (0) - standardni ulaz
- STDOUT (1) - standardni izlaz
- STDERR (2) - Standardna pogreška
Kada ćemo raditi s trikovima "pipe", "pipe" će uzeti naredbu STDOUT i proslijediti je STDIN-u sljedeće naredbe.
Provjerimo neke od najčešćih načina na koje možete uključiti naredbu "pipe" u svoju svakodnevnu upotrebu.
Naredba cijevi
Osnovna upotreba
Bolje je elaborirati način rada "cijevi" na primjeru uživo, zar ne? Započnimo. Sljedeća naredba reći će “pacmanu”, zadanom upravitelju paketa za Arch i sve distro-ove bazirane na Archu, da ispiše sve instalirane pakete na sustavu.
pacman -Qqe
To je stvarno DUGA lista paketa. Kako bi bilo, pokupiti samo nekoliko komponenata? Mogli bismo upotrijebiti "grep". Ali kako? Jedan od načina bio bi izbacivanje izlaza u privremenu datoteku, "grep" željenog izlaza i brisanje datoteke. Ova serija zadataka, sama po sebi, može se pretvoriti u skriptu. Ali skripte radimo samo za vrlo velike stvari. Za ovaj zadatak, pozovimo snagu "cijevi"!
pacman -Qqe | grep
Sjajno, zar ne? "|" znak je poziv naredbi "pipe". Dohvaća STDOUT s lijevog dijela i ubacuje ga u STDIN desnog dijela.
U gore spomenutom primjeru, naredba "pipe" zapravo je proslijedila izlaz na kraju dijela "grep". Evo kako se to odvija.
pacman -Qqe> ~ / Desktop / pacman_package.txtgrep python ~ / Desktop / pacman_package.txt
Višestruki cjevovodi
U osnovi, nema ništa posebno s naprednom uporabom naredbe "pipe". O vama ovisi kako ćete ga koristiti.
Na primjer, započnimo slaganjem više cjevovoda.
pacman -Qqe | grep p | grep t | grep py
Izlaz naredbe pacman filtrira se dalje i dalje pomoću "grep" kroz seriju cjevovoda.
Ponekad, kada radimo sa sadržajem datoteke, on može biti jako, jako velik. Pronaći pravo mjesto željenog ulaska može biti teško. Potražimo sve unose koji uključuju znamenke 1 i 2.
mačka demo.txt | grep -n 1 | grep -n 2
Manipuliranje popisom datoteka i direktorija
Što učiniti kad imate posla s direktorijom u kojem je TONA datoteka? Prilično je dosadno pomicati se kroz cijeli popis. Naravno, zašto to ne biste učinili podnošljivijim s cijevi? U ovom primjeru provjerimo popis svih datoteka u mapi “/ usr / bin”.
ls -l
Ovdje "ls" ispisuje sve datoteke i njihove podatke. Zatim, "cijev" je prosljeđuje na "više" za rad s tim. Ako niste znali, "više" je alat koji pretvara tekstove u jedan zaslon. Međutim, to je stari alat i prema službenoj dokumentaciji više se preporučuje "manje".
ls -l / usr / bin | manje
Sortiranje rezultata
Postoji ugrađeni alat za sortiranje koji će unositi tekst i razvrstati ih. Ovaj je alat pravi dragulj ako radite s nečim stvarno neurednim. Na primjer, dobio sam ovu datoteku punu slučajnih nizova.
mačka demo.txt
Dovoljno je cijeviti ga da se "sortira".
mačka demo.txt | vrsta
Tako je bolje!
Ispis šibica određenog uzorka
ls -l | pronaći ./ -tip f -ime "*.txt "-exec grep 00110011 \;
Ovo je prilično izvrnuta naredba, zar ne? Isprva "ls" daje popis svih datoteka u direktoriju. Alat "pronađi" uzima izlaz, traži ".txt “i poziva„ grep “za traženje„ 00110011 “. Ova će naredba provjeriti svaku pojedinu tekstualnu datoteku u direktoriju s TXT nastavkom i potražiti podudaranja.
Ispis sadržaja datoteke određenog raspona
Kada radite s velikom datotekom, uobičajeno je imati potrebu za provjerom sadržaja određenog raspona. Upravo to možemo učiniti pametnom kombinacijom "mačka", "glava", "rep" i naravno "cijev". Alat "glava" daje prvi dio sadržaja, a "rep" zadnji dio.
mačkamačka
Jedinstvene vrijednosti
Kada radite s dvostrukim izlazima, to može biti prilično neugodno. Ponovljeni unos ponekad može uzrokovati ozbiljne probleme. U ovom primjeru, bacimo “uniq” na tok teksta i spremimo ga u zasebnu datoteku.
Na primjer, ovdje je tekstualna datoteka koja sadrži veliki popis brojeva koji imaju 2 znamenke. Ovdje definitivno postoje duplicirani sadržaji, zar ne?
mačka duplikat.txt | vrsta
Izvršimo sada postupak filtriranja.
mačka duplikat.txt | razvrstaj | uniq> jedinstven.txt
Pogledajte izlaz.
šišmiš jedinstven.txt
Izgleda bolje!
Cijevi za pogreške
Ovo je zanimljiva metoda cjevovoda. Ovom se metodom STDERR preusmjerava na STDOUT i nastavlja se s cjevovodima. Označava se simbolom "| &" (bez navodnika). Na primjer, stvorimo pogrešku i pošaljemo izlaz nekom drugom alatu. U ovom sam primjeru samo otkucao slučajnu naredbu i prenio grešku na "grep".
adsfds | & grep n
Završne misli
Iako je sama „cijev“ po svojoj prirodi prilično pojednostavljena, način rada nudi vrlo svestran način korištenja metode na beskonačne načine. Ako se bavite skriptanjem Basha, to je puno korisnije. Ponekad jednostavno možeš izravno raditi lude stvari! Saznajte više o skripti za Bash.