- STDIN (0) - standarta ievade
- STDOUT (1) - standarta izeja
- STDERR (2) - standarta kļūda
Kad mēs strādāsim ar “pipe” trikiem, “pipe” paņems komandas STDOUT un pārsūtīs to nākamās komandas STDIN.
Apskatīsim dažus visizplatītākos veidus, kā jūs varat iekļaut komandu "pipe" savā ikdienas lietošanā.
Cauruļu komanda
Pamata lietošana
Labāk ir detalizētāk aprakstīts “caurules” darba paņēmiens ar tiešu piemēru? Sāksim. Šī komanda liks “pacman”, noklusējuma pakotņu pārvaldniekam Arch un visiem Arch balstītajiem distros, izdrukāt visas sistēmā instalētās pakotnes.
pacman -Qqe
Tas ir patiešām GARS paku saraksts. Kā, lai uzņemtu tikai dažus komponentus? Mēs varētu izmantot “grep”. Bet kā? Viens no veidiem būtu izvades izlikšana pagaidu failā, “grep” vēlamā izvade un faila dzēšana. Šo uzdevumu sēriju pati par sevi var pārvērst par skriptu. Bet mēs rakstām tikai ļoti lielām lietām. Veicot šo uzdevumu, izmantosim “caurules” spēku!
pacman -Qqe | grep
Lieliski, vai ne? “|” zīme ir izsaukums komandai “pipe”. Tas satver STDOUT no kreisās sadaļas un padod to labās sadaļas STDIN.
Iepriekš minētajā piemērā komanda “pipe” faktiski izlaida izvadi “grep” daļas beigās. Lūk, kā tas spēlē.
pacman -Qqe> ~ / Desktop / pacman_package.txtgrep python ~ / Desktop / pacman_package.txt
Vairāki cauruļvadi
Būtībā, izmantojot komandu “pipe”, ir nekas īpašs. Tas, kā to izmantot, ir atkarīgs tikai no jums.
Piemēram, sāksim ar vairāku cauruļvadu sakraušanu.
pacman -Qqe | grep p | grep t | grep py
Pacman komandas izvade tiek filtrēta arvien tālāk, izmantojot “grep” caur virkni cauruļvadu.
Dažreiz, kad mēs strādājam ar faila saturu, tas var būt patiešām ļoti liels. Var būt grūti atrast vajadzīgo ierakstu īsto vietu. Meklēsim visus ierakstus, kas ietver 1. un 2. ciparu.
kaķu demonstrācija.txt | grep -n 1 | grep -n 2
Manipulējot ar failu un direktoriju sarakstu
Ko darīt, ja jums ir darīšana ar direktoriju, kurā ir TONS failu? Ir diezgan kaitinoši ritināt visu sarakstu. Protams, kāpēc gan nepadarīt to izturīgāku ar cauruli? Šajā piemērā apskatīsim visu mapē “/ usr / bin” esošo failu sarakstu.
ls -l
Šeit “ls” izdrukā visus failus un to informāciju. Tad “caurule” to nodod “vairāk”, lai ar to strādātu. Ja jūs nezināt, “vairāk” ir rīks, kas tekstu vienlaikus pārvērš vienā ekrānainā skatā. Tomēr tas ir vecs rīks, un saskaņā ar oficiālo dokumentāciju vairāk ieteicams lietot mazāk.
ls -l / usr / bin | mazāk
Kārto izvadi
Ir iebūvēts rīks “kārtot”, kas veiks teksta ievadi un sakārtos tos. Šis rīks ir īsta pērle, ja strādājat ar kaut ko patiešām netīru. Piemēram, es saņēmu šo failu ar nejaušām virknēm.
kaķu demonstrācija.txt
Vienkārši nosūtiet to “kārtot”.
kaķu demonstrācija.txt | kārtot
Tā ir labāk!
Konkrēta raksta sērkociņu drukāšana
ls -l | atrast ./ -type f -name "*.txt "-exec grep 00110011 \;
Šī ir diezgan savīti komanda, labi? Sākumā “ls” izvada visu direktorijā esošo failu sarakstu. Rīks “atrast” ņem rezultātu, meklē “.txt ”faili un izsauc“ grep ”, lai meklētu“ 00110011 ”. Šī komanda pārbaudīs katru direktorijā esošo teksta failu ar TXT paplašinājumu un meklēs atbilstības.
Drukāt faila saturu noteiktā diapazonā
Kad strādājat ar lielu failu, parasti ir jāpārbauda noteikta diapazona saturs. Mēs to varam izdarīt, izmantojot gudru kombināciju “kaķis”, “galva”, “aste” un, protams, “caurule”. Rīks “galva” izvada satura pirmo daļu un “aste” - pēdējo daļu.
kaķiskaķis
Unikālas vērtības
Strādājot ar dublētām izejām, tas var būt diezgan kaitinošs. Dažreiz ievades dublikāti var izraisīt nopietnas problēmas. Šajā piemērā metīsim “uniq” teksta straumē un saglabāsim to atsevišķā failā.
Piemēram, šeit ir teksta fails, kurā ir liels skaitļu saraksts, kas ir 2 cipari garš. Šeit noteikti ir dublēts saturs, labi?
kaķa dublikāts.txt | kārtot
Tagad veiksim filtrēšanas procesu.
kaķa dublikāts.txt | kārtot | uniq> unikāls.txt
Pārbaudiet izvadi.
nūja unikāla.txt
Izskatās labāk!
Kļūdu caurules
Šī ir interesanta cauruļvadu metode. Šo metodi izmanto, lai novirzītu STDERR uz STDOUT un turpinātu cauruļvadu darbību. To apzīmē ar simbolu “| &” (bez pēdiņām). Piemēram, izveidosim kļūdu un nosūtīsim izvadi uz kādu citu rīku. Šajā piemērā es vienkārši ierakstīju kādu nejaušu komandu un kļūdu nodevu “grep”.
adsfds | & grep n
Pēdējās domas
Kaut arī pati “caurule” pēc savas būtības ir diezgan vienkāršota, tās darbības veids piedāvā ļoti daudzveidīgu metodi, kā bezgalīgi izmantot metodi. Ja jūs domājat par Bash skriptiem, tas ir daudz noderīgāk. Dažreiz jūs varat vienkārši izdarīt trakas lietas tieši! Uzziniet vairāk par Bash skriptiem.