Redirectare, pipe-uri
Pagina principala | Curs | Laborator | Proiect |
Controlul proceselor >> |
Redirectari
Majoritatea comenzilor Unix trimit rezultatul la iesirea standard (standard output) care este terminalul de la care s-a rulat comanda. De exemplu comanda w trimite rezultatul la iesirea standard adica la terminal afiseaza utilizatorii conectati la sistem. Iesirea comenzii poate fi "trimisa" in loc de standard output intr-un fisier, aceasta operatie numindu-se redirectarea iesirii. Redirectarea se realizeaza cu caracterul >. De exemplu comanda:
w > conectati
va redirecta iesirea comenzii w in fisierul conectati, care apoi poate fi vizualizata cu comenzile less sau cat. La fel iesirea oricarei comenzi care are ca iesire standard output poate fi redirectata intr-un fisier. Un alt exemplu:
du -k > marime_fisiere
redirecteaza lista data de comanda du in fisierul numit marime_fisiere.
Executati comanda:
cat conectati >> marime_fisere
dupa care afisati continutul fiserului marime_fisiere. Ce observati? Continutul fisierului conectati s-a adaugat la sfarsitul fisierului marime_fisiere. Deci semnele >> realizeaza adaugarea (append) fisierului din stanga la cel din dreapta. Daca s-ar fi dat comanda
cat conectati > lungime_fisiere
atunci continutul fisierului conectati ar fi inlocuit continutul fisierului lungime_fisiere.
Daca dorim sa aflam cati utilizatori sunt conectati putem folosi comenzile:
who > conectati
wc -l < conectati
Prima comanda o cunoasteti, ce-a de-a doua foloseste redirectarea intrarii. Comanda wc -l calculeaza numarul de linii de la intrarea standard, iar in aceasta comanda s-a redirectat intrarea din fisierul conectati, adica va afisa numarul de linii aflati in acest fisier, deci numarul de utilizatori conectati la sistem.
Pipe-uri (structuri tip conducta)
Daca luam exemplul de mai sus, vedem ca s-a folosit fisierul intermediar pentru a vedea cati utilizatori sunt conectati la sistem. S-a redirectat iesirea comenzii who in fisier, dupa care acest fisier s-a redirectat la intrarea comenzii wc.
Exista o alta modalitate de a afla numarul de utilizatori conectati la sistem, fara a utiliza un fisier intermediar. Sistemul de operare Unix permite "conectarea" a doua comenzi, metoda cunoscuta sub numele de pipe (conducta). Aceasta ofera posibilitatea de a trimite iesirea de la o comanda la intrarea altei comenzi. Pipe-ul se obtine prin plasarea caracterului | intre cele doua comenzi. Procesul este aratat si in figura de mai jos:
Cand exista un pipe intre doua comenzi, iesirea standard de la prima este conectata la intrarea standard a celei de-a doua comenzi. Utilizatorul nu vede iesirea comenzii who, deoarece e trimis direct la comanda wc, cum este arata mai jos.
Pipe-ul se utilizeaza des cand iesirea unei comenzi da o lista mai lunga decat marimea terminalului. Atunci iesirea se trimite la comanda less, ca in exemplele de mai jos:
ps -uax | less
ls -al | less
Controlul proceselor >> |