Cev je oblika preusmeritve (prenos standardnega izhoda na nek drug cilj), ki se uporablja v Linuxu in drugih operacijskih sistemih, podobnih Unixu, za pošiljanje izhoda enega ukaza/programa/procesa v drug ukaz/program/proces v nadaljnjo obdelavo . Sistemi Unix/Linux omogočajo, da se stdout ukaza poveže s stdin drugega ukaza. To lahko storite z uporabo znaka cevi '|' .
Cev se uporablja za združevanje dveh ali več ukazov in pri tem izhod enega ukaza deluje kot vhod v drug ukaz, izhod tega ukaza pa lahko deluje kot vhod v naslednji ukaz itd. Lahko si ga predstavljamo tudi kot začasno povezavo med dvema ali več ukazi/programi/procesi. Programi ukazne vrstice, ki izvajajo nadaljnjo obdelavo, se imenujejo filtri.
Ta neposredna povezava med ukazi/programi/procesi jim omogoča sočasno delovanje in omogoča neprekinjen prenos podatkov med njimi, namesto da bi jih morali prenašati skozi začasne besedilne datoteke ali prek zaslona.
Cevi so enosmerne, tj. podatki tečejo od leve proti desni skozi cevovod.
Sintaksa:
primerjava leva in tigra
command_1 | command_2 | command_3 | .... | command_N>
Primer cevovoda v Unixu ali Linuxu
1. Seznam vseh datotek in imenikov ter jih dajte kot vhod ukazu `grep` z uporabo cevovoda v Linuxu
ls | grep file.txt>
ls | grep file.txt
Pri tem najprej uporabimo `ls` za seznam vseh datotek in imenikov v trenutnem imeniku, nato posredujemo njegov rezultat ukazu `grep` in iščemo ime datoteke `file.txt`. Izhod ukaza ls se pošlje na vhod ukaza grep, rezultat pa je seznam datotek, ki se ujemajo z iskalnim izrazom.
2. Seznam vseh datotek in imenikov ter jih podajte kot vhodne podatke za ukaze `more` z uporabo cevovoda v Linuxu.
$ ls -l | more>
$ ls -l | več
Ukaz več sprejme izhod $ ls -l kot svoj vhod. Neto učinek tega ukaza je, da se izhod ls -l prikaže en zaslon naenkrat. Cev deluje kot vsebnik, ki sprejme izhod ls -l in ga da več kot vhod. Ta ukaz ne uporablja diska za povezavo standardnega izhoda ls -l s standardnim vhodom more, ker je cev implementirana v glavnem pomnilniku.
Z vidika operaterjev preusmeritve V/I je zgornji ukaz enakovreden naslednjemu zaporedju ukazov.
različice za android
$ ls -l ->temp več -> temp (ali več temp) [vsebina temp] rm temp>temp
ls -l -> temp
Izhod zgornjih dveh ukazov je enak.
3. Razvrstite seznam datotek po velikosti s cevovodom v Linuxu
ls -l sort -k 5>ls -l sort -k 5
Ta ukaz prikaže seznam vseh datotek v trenutnem imeniku in nato uporabi ukaz `sort` za razvrščanje seznama po petem stolpcu, ki predstavlja velikost datoteke.
4. Uporabite ukaza sort in uniq, da razvrstite datoteko in natisnete edinstvene vrednosti s cevovodom v Linuxu
$ sort record.txt | uniq>
To bo razvrstilo dano datoteko in natisnilo samo edinstvene vrednosti.
razvrsti zapis.txt | edinstven
5. Uporabite glavo in rep za tiskanje vrstic v določenem obsegu v datoteki.
$ cat sample2.txt | head -7 | tail -5>
Ta ukaz izbere prvih 7 vrstic skozi ukaz (head -7) in to bo vneseno v ukaz (tail -5), ki bo končno natisnil zadnjih 5 vrstic iz teh 7 vrstic.
mačji vzorec2.txt | glava -7 | rep -5
6. Uporabite ls in find za seznam in tiskanje vseh vrstic, ki se ujemajo z določenim vzorcem v ujemajočih se datotekah.
$ ls -l | find ./ -type f -name '*.txt' -exec grep 'program' {} ;> Ta ukaz izbere datoteke z .txt razširitev v danem imeniku in išče vzorce, kot je program v zgornjem primeru, ter natisne tiste, ki vsebujejo program.
kako onemogočiti razvijalski način
ls -l | find ./ -type f -name *.txt -exec grep program {} ;
7. Uporabite ukaz cat, grep, tee in wc, da preberete določen vnos uporabnika in ga shranite v datoteko ter natisnete število vrstic.
$ cat result.txt | grep 'Rajat Dua' | tee file2.txt | wc -l>
Ta ukaz izbere Rajat Dua in jih shranite v file2.txt ter natisnite skupno število ustreznih vrstic Rajat Dua
mačji rezultat.txt | grep Rajat Dua | tee file2.txt | wc -l
pretvorbo niza v celo število
8.Kako lahko preusmerim izhod cevovodnega ukaza v datoteko v Unixu ali Linuxu?
Za preusmeritev izhoda cevovodnega ukaza lahko uporabimo operater preusmeritve `>`.
Na primer:
Če imam datoteko z imenom »file.txt« in jo želim preusmeriti na datoteko z imenom »geeks.txt«.
ls | grep 'file'>geeks.txt>geeks.txt
ls | grep 'datoteka'> geeks.txt
Zaključek
Piping je zmogljiva funkcija v operacijskih sistemih Unix in Linux, ki nam pomaga povezati različne ukaze skupaj za hitro in učinkovito izvajanje kompleksnih nalog. V tem članku smo se naučili, kako lahko preusmerimo izhod enega ukaza na vhod drugega ukaza. Na splošno lahko rečemo, da lahko z uporabo cevovodov prihranimo čas, izboljšamo produktivnost in zmanjšamo porabo prostora na disku.