- STDIN (0) - standartinė įvestis
- STDOUT (1) - standartinė išvestis
- STDERR (2) - standartinė klaida
Kai ketiname dirbti su „pipe“ gudrybėmis, „pipe“ paims komandos STDOUT ir perduos ją kitos komandos STDIN.
Pažiūrėkime keletą dažniausiai pasitaikančių būdų, kaip galite įtraukti komandą „pipe“ į savo kasdienį naudojimą.
Vamzdžių komanda
Pagrindinis naudojimas
Geriau išsiaiškinti „vamzdžio“ darbo metodą su gyvu pavyzdžiu, tiesa? Pradėkime. Ši komanda nurodys „pacman“, numatytąjį „Arch“ paketų tvarkytuvą ir visus „Arch“ pagrindu veikiančius distros, atsispausdinti visus įdiegtus paketus sistemoje.
pacman -Qqe
Tai tikrai ilgas pakuočių sąrašas. Kaip, apie tik kelis komponentus? Galėtume naudoti „grep“. Bet kaip? Vienas iš būdų būtų išvesties išvedimas į laikiną failą, „grep“ norimą išvestį ir failo ištrynimas. Ši užduočių serija savaime gali būti paversta scenarijumi. Bet mes rašome tik labai didelius dalykus. Šiai užduočiai pasinaudokime „vamzdžio“ galia!
pacman -Qqe | grep
Nuostabu, ar ne? „|“ ženklas yra kvietimas komandai „vamzdis“. Jis paima STDOUT iš kairės dalies ir paduoda ją į dešinės dalies STDIN.
Minėtame pavyzdyje komanda „pipe“ iš tikrųjų perdavė išvestį „grep“ dalies pabaigoje. Štai kaip tai vaidina.
pacman -Qqe> ~ / Desktop / pacman_package.txtgrep python ~ / Desktop / pacman_package.txt
Keli vamzdynai
Iš esmės nėra nieko ypatingo, jei išplėstinė komanda „pipe“ naudojama. Tai, kaip juo naudotis, priklauso tik nuo jūsų.
Pavyzdžiui, pradėkime nuo kelių vamzdynų sukrovimo.
pacman -Qqe | grep p | grep t | grep py
„Pacman“ komandos išvestis vis labiau filtruojama „grep“ per vamzdynų seriją.
Kartais, kai dirbame su failo turiniu, jis gali būti tikrai labai didelis. Sužinoti tinkamą norimo įrašo vietą gali būti sunku. Ieškokime visų įrašų, kuriuose yra 1 ir 2 skaitmenys.
katės demonstracija.txt | grep -n 1 | grep -n 2
Tvarkyti failų ir katalogų sąrašą
Ką daryti, kai tvarkote katalogą, kuriame yra TONS failų? Gana nemalonu slinkti per visą sąrašą. Aišku, kodėl gi nepadarius jo vamzdžiu geriau? Šiame pavyzdyje patikrinkime visų aplanke „/ usr / bin“ esančių failų sąrašą.
ls -l
Čia „ls“ atsispausdina visus failus ir jų informaciją. Tada „vamzdis“ perduoda jį „daugiau“, kad galėtų su tuo dirbti. Jei nežinojai, „daugiau“ yra įrankis, kuris vienu metu paverčia tekstus vienu ekranu. Tačiau tai senas įrankis ir, remiantis oficialiais dokumentais, labiau rekomenduojama vartoti „mažiau“.
ls -l / usr / bin | mažiau
Išvesties rūšiavimas
Yra įmontuotas įrankis „rūšiuoti“, kuris ims teksto įvestį ir sutvarkys. Šis įrankis yra tikras perlas, jei dirbate su kažkuo tikrai netvarkingu. Pavyzdžiui, aš turėjau šį failą, kuriame buvo daug atsitiktinių eilučių.
katės demonstracija.txt
Tiesiog vamzdžiu „surūšiuoti“.
katės demonstracija.txt | rūšiuoti
Taip geriau!
Tam tikro rašto degtukų spausdinimas
ls -l | rasti ./ -type f -name "*.txt "-exec grep 00110011 \;
Tai yra gana sukta komanda, tiesa? Iš pradžių „ls“ pateikia visų kataloge esančių failų sąrašą. „Rasti“ įrankis ima išvestį, ieško „.txt “failus ir iškviečia„ grep “ieškoti„ 00110011 “. Ši komanda patikrins kiekvieną kataloge esantį tekstinį failą su TXT plėtiniu ir ieškos atitikmenų.
Spausdinti tam tikro diapazono failo turinį
Kai dirbate su dideliu failu, dažniausiai reikia patikrinti tam tikro diapazono turinį. Mes galime tai padaryti su protingu „katės“, „galvos“, „uodegos“ ir, žinoma, „pypkės“ deriniu. „Galvos“ įrankis pateikia pirmąją turinio dalį, o „uodega“ - paskutinę.
katėkatė
Unikalios vertės
Dirbant su pasikartojančiais išvestimis, tai gali būti gana erzina. Kartais pasikartojantis įvestis gali sukelti rimtų problemų. Šiame pavyzdyje užmeskime „uniq“ ant teksto srauto ir išsaugokime jį atskirame faile.
Pvz., Čia yra teksto failas, kuriame yra didelis skaičius, sudarytas iš 2 skaitmenų. Čia tikrai yra pasikartojančio turinio, tiesa?
katės dublikatas.txt | rūšiuoti
Dabar atlikime filtravimo procesą.
katės dublikatas.txt | rūšiuoti | uniq> unikalus.txt
Patikrinkite išvestį.
šikšnosparnis unikalus.txt
Geriau atrodo!
Klaidų vamzdžiai
Tai yra įdomus vamzdynų metodas. Šis metodas naudojamas STDERR nukreipti į STDOUT ir tęsti vamzdyną. Tai žymima simboliu „| &“ (be kabučių). Pavyzdžiui, sukurkime klaidą ir išsiųskime išvestį į kokį nors kitą įrankį. Šiame pavyzdyje aš tiesiog įvedžiau atsitiktinę komandą ir perdaviau klaidą „grep“.
adsfds | & grep n
Paskutinės mintys
Nors pats „vamzdis“ yra gana paprasto pobūdžio, jo veikimo būdas siūlo labai įvairiapusišką būdą naudoti begaliniu būdu. Jei naudojate „Bash“ scenarijus, tai yra daug naudingiau. Kartais galite tiesiog daryti beprotiškus dalykus! Sužinokite daugiau apie „Bash“ scenarijus.