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 >>