O conductă este o formă de redirecționare (transferul ieșirii standard către o altă destinație) care este utilizată în Linux și alte sisteme de operare asemănătoare Unix pentru a trimite rezultatul unei comenzi/program/proces către o altă comandă/program/proces pentru procesare ulterioară . Sistemele Unix/Linux permit ca stdout-ul unei comenzi să fie conectat la stdin-ul unei alte comenzi. Puteți face acest lucru folosind caracterul pipe '|' .
Tubul este folosit pentru a combina două sau mai multe comenzi și, în aceasta, ieșirea unei comenzi acționează ca intrare pentru o altă comandă, iar ieșirea acestei comenzi poate acționa ca intrare pentru următoarea comandă și așa mai departe. De asemenea, poate fi vizualizat ca o conexiune temporară între două sau mai multe comenzi/programe/procese. Programele din linia de comandă care fac procesarea ulterioară sunt denumite filtre.
Această conexiune directă între comenzi/programe/procese le permite să funcționeze simultan și le permite ca datele să fie transferate între ele în mod continuu, mai degrabă decât să fie nevoie să le treacă prin fișiere text temporare sau prin ecranul de afișare.
Conductele sunt unidirecționale, adică datele circulă de la stânga la dreapta prin conductă.
Sintaxă:
command_1 | command_2 | command_3 | .... | command_N>
Exemplu de conducte în Unix sau Linux
1. Listați toate fișierele și directoarele și dați-le ca intrare la comanda `grep` folosind piping în Linux
ls | grep file.txt>
ls | grep file.txt
forma completa pvr
În primul rând, folosim `ls` pentru a lista toate fișierele și directoarele din directorul curent, apoi trecem rezultatul lui la comanda `grep` și căutăm numele fișierului `file.txt`. Ieșirea comenzii ls este trimisă la intrarea comenzii grep, iar rezultatul este o listă de fișiere care se potrivesc cu termenul de căutare.
sonu nigam
2. Listați toate fișierele și directoarele și dați-le ca intrare la comenzile `mai multe` folosind piping în Linux.
$ ls -l | more>
$ ls -l | Mai mult
Cu cât comanda more ia ieșirea lui $ ls -l ca intrare. Efectul net al acestei comenzi este că ieșirea lui ls -l este afișată câte un ecran. Conducta acționează ca un container care preia ieșirea lui ls -l și o dă la mai mult ca intrare. Această comandă nu folosește un disc pentru a conecta ieșirea standard a ls -l la intrarea standard a more, deoarece pipe este implementată în memoria principală.
În ceea ce privește operatorii de redirecționare I/O, comanda de mai sus este echivalentă cu următoarea secvență de comenzi.
$ ls -l ->temp more -> temp (sau mai mult temp) [conținutul de temp] rm temp>temp
ls -l -> temp
Ieșirea celor două comenzi de mai sus este aceeași.
3. Sortați o listă de fișiere în funcție de dimensiune utilizând conducte în Linux
ls -l sort -k 5>ls -l sort -k 5
java iese din buclă
Această comandă listează toate fișierele din directorul curent și apoi folosește comanda `sort` pentru a sorta lista după a cincea coloană, care reprezintă dimensiunea fișierului.
4. Folosiți comanda sort și uniq pentru a sorta un fișier și a imprima valori unice utilizând conducte în Linux
$ sort record.txt | uniq>
Aceasta va sorta fișierul dat și va imprima numai valorile unice.
sortare înregistrare.txt | unic
5. Folosiți cap și coadă pentru a imprima linii dintr-un anumit interval dintr-un fișier.
$ cat sample2.txt | head -7 | tail -5>
Această comandă selectează primele 7 linii prin comanda (head -7) și care va fi introdusă la comanda (tail -5), care va imprima în cele din urmă ultimele 5 linii din acele 7 linii.
pisica sample2.txt | cap -7 | coada -5
6. Folosiți ls și find pentru a lista și tipări toate liniile care se potrivesc cu un anumit model în fișierele care se potrivesc.
$ ls -l | find ./ -type f -name '*.txt' -exec grep 'program' {} ;> Această comandă selectează fișierele cu .TXT extensie în directorul dat și caută modele precum program în exemplul de mai sus și le imprimă pe cele care au program în ele.
ls -l | find ./ -type f -name *.txt -exec grep program {} ;
7. Folosiți comanda cat, grep, tee și wc pentru a citi o anumită intrare de la utilizator și a stoca într-un fișier și a tipări numărul de linii.
$ cat result.txt | grep 'Rajat Dua' | tee file2.txt | wc -l>
Această comandă selectează Rajat Dua și stocați-le în file2.txt și imprimați numărul total de linii care se potrivesc Rajat Dua
rezultat pisica.txt | grep Rajat Dua | tee file2.txt | wc -l
care este dimensiunea ecranului computerului meu
8.Cum pot redirecționa ieșirea unei comenzi piperate către fișier în Unix sau Linux?
Putem folosi operatorul de redirecționare `>` pentru a redirecționa ieșirea unei comenzi piperate.
De exemplu:
sortare cu găleată
Dacă am un nume de fișier `file.txt` și vreau să-l redirecționez către un nume de fișier `geeks.txt`.
ls | grep 'file'>geeks.txt>geeks.txt
ls | grep „fișier”> geeks.txt
Concluzie
Pipingul este o caracteristică puternică în sistemele de operare Unix și Linux, care ne ajută să conectăm diferite comenzi împreună pentru a efectua sarcini complexe rapid și eficient. În acest articol am învățat cum putem redirecționa ieșirea unei comenzi către intrarea altei comenzi. În general, putem spune că prin utilizarea conductelor putem economisi timp, îmbunătăți productivitatea și reduce utilizarea spațiului pe disc.