Vamzdis yra peradresavimo forma (standartinės išvesties perkėlimas į kitą paskirties vietą), kuri naudojama Linux ir kitose į Unix panašiose operacinėse sistemose, siekiant nusiųsti vienos komandos / programos / proceso išvestį į kitą komandą / programą / procesą tolesniam apdorojimui. . „Unix“ / „Linux“ sistemos leidžia komandos stdout prijungti prie kitos komandos stdin. Tai galite padaryti naudodami vamzdžio simbolį '|' .
Vamzdis naudojamas sujungti dvi ar daugiau komandų, o čia vienos komandos išvestis veikia kaip kitos komandos įvestis, o šios komandos išvestis gali veikti kaip kitos komandos įvestis ir pan. Jis taip pat gali būti vizualizuotas kaip laikinas ryšys tarp dviejų ar daugiau komandų / programų / procesų. Komandinės eilutės programos, kurios atlieka tolesnį apdorojimą, vadinamos filtrais.
Šis tiesioginis komandų / programų / procesų ryšys leidžia joms veikti vienu metu ir leidžia nuolat perduoti duomenis tarp jų, o ne perduoti juos per laikinus tekstinius failus arba per ekraną.
Vamzdžiai yra vienakrypčiai, t. dujotiekiu duomenys teka iš kairės į dešinę.
Sintaksė:
command_1 | command_2 | command_3 | .... | command_N>
„Unix“ arba „Linux“ vamzdynų pavyzdys
1. Pateikite visų failų ir katalogų sąrašą ir nurodykite juos kaip įvestį komandai „grep“, naudodami vamzdyną sistemoje „Linux“
ls | grep file.txt>
ls | grep failas.txt
Pirmiausia naudojame „ls“, kad pateiktume visus failus ir katalogus dabartiniame kataloge, tada perduodame jo išvestį komandai „grep“ ir ieškome failo pavadinimo „file.txt“. Komandos ls išvestis siunčiama į grep komandos įvestį, o rezultatas yra failų, atitinkančių paieškos terminą, sąrašas.
2. Išvardykite visus failus ir katalogus ir pateikite juos kaip įvestį komandoms „daugiau“, naudodami vamzdyną sistemoje „Linux“.
$ ls -l | more>
$ ls -l | daugiau
Komanda more kaip įvestį naudoja $ ls -l išvestį. Grynasis šios komandos poveikis yra tas, kad ls -l išvestis rodoma po vieną ekraną. Vamzdis veikia kaip konteineris, kuris paima ls -l išvestį ir suteikia jį daugiau kaip įvestį. Ši komanda nenaudoja disko standartiniam ls -l išėjimui prijungti prie standartinės daugiau įvesties, nes vamzdis yra įdiegtas pagrindinėje atmintyje.
Kalbant apie I/O peradresavimo operatorius, aukščiau pateikta komanda yra lygiavertė toliau nurodytai komandų sekai.
kaip atidaryti failą java
$ ls -l ->temp daugiau -> temp (arba daugiau temp) [temp. turinys] rm temp>temp
ls -l -> temp
Aukščiau pateiktų dviejų komandų išvestis yra tokia pati.
3. Rūšiuokite failų sąrašą pagal dydį naudodami vamzdyną sistemoje Linux
ls -l sort -k 5>ls -l rūšiuoti -k 5
Ši komanda pateikia visų dabartinio katalogo failų sąrašą, o tada naudoja komandą „rūšiuoti“, kad surūšiuotų sąrašą pagal penktą stulpelį, kuris nurodo failo dydį.
java string indexof
4. Norėdami rūšiuoti failą ir spausdinti unikalias reikšmes naudodami vamzdyną sistemoje Linux, naudokite komandą sort ir uniq
$ sort record.txt | uniq>
Tai surūšiuos pateiktą failą ir išspausdins tik unikalias reikšmes.
rūšiuoti įrašą.txt | unikalus
5. Norėdami spausdinti eilutes tam tikrame failo diapazone, naudokite galvutę ir uodegą.
$ cat sample2.txt | head -7 | tail -5>
Ši komanda pasirenka pirmas 7 eilutes per komandą (head -7), kuri bus įvedama į komandą (uodega -5), kuri galiausiai išspausdins paskutines 5 eilutes iš tų 7 eilučių.
katės pavyzdys2.txt | galva -7 | uodega -5
6. Naudokite ls ir Find, kad išvardintumėte ir atspausdintumėte visas eilutes, atitinkančias tam tikrą šabloną atitinkančiuose failuose.
$ ls -l | find ./ -type f -name '*.txt' -exec grep 'program' {} ;> Ši komanda pasirenka failus su .txt plėtinį nurodytame kataloge ir ieško šablonų, tokių kaip programa aukščiau pateiktame pavyzdyje, ir išspausdina tuos, kuriuose yra programa.
ls -l | rasti ./ -type f -name *.txt -exec grep programa {} ;
7. Naudokite cat, grep, tee ir wc komandas, kad perskaitytumėte konkretų vartotojo įrašą ir išsaugotumėte failą bei spausdintumėte eilučių skaičių.
$ cat result.txt | grep 'Rajat Dua' | tee file2.txt | wc -l>
Ši komanda pasirenka Rajat Dua ir išsaugokite juos faile2.txt ir išspausdinkite bendrą atitinkančių eilučių skaičių Rajat Dua
kačių rezultatas.txt | grep Rajat Dua | tee failas2.txt | wc -l
8.Kaip galiu nukreipti komandos išvestį į rinkmeną Unix arba Linux sistemoje?
Galime naudoti peradresavimo operatorių `>`, kad peradresuotume vamzdžių komandos išvestį.
bash elifas
Pavyzdžiui:
Jei turiu failo pavadinimą „failas.txt“ ir noriu jį nukreipti į failo pavadinimą „geeks.txt“.
ls | grep 'file'>geeks.txt>geeks.txt
ls | grep ‘failas’> geeks.txt
Išvada
Vamzdžiai yra galinga Unix ir Linux operacinių sistemų funkcija, padedanti susieti skirtingas komandas, kad būtų galima greitai ir efektyviai atlikti sudėtingas užduotis. Šiame straipsnyje mes sužinojome, kaip galime nukreipti vienos komandos išvestį į kitos komandos įvestį. Apskritai galime pasakyti, kad naudodami vamzdynus galime sutaupyti laiko, pagerinti našumą ir sumažinti vietos diske naudojimą.