Skip to main content
Acum că am înțeles teoria, să vedem redirecționarea output-ului în practică în această lecție.
A dark-themed presentation slide titled "Demo — Redirecting Output to Files and Programs" with two rounded panels on the right labeled "Control output" and "Manages destinations."
Scopul demo-ului este simplu: în loc să vedeți doar outputul în terminal, vom controla unde se duce — în fișiere, către alte comenzi sau direct în „nimic” (/dev/null). Vom acoperi:
  • Crearea mediului de lucru
  • Overwrite vs append (> vs >>)
  • Redirecționarea erorilor (stderr)
  • Redirecționarea separată a stdout și stderr
  • Suprimarea output-ului cu /dev/null
  • Pipe-uri (|) pentru a conecta comenzi
  • tee pentru a scrie simultan la fișier și la terminal
Să începem.

1. Pregătirea mediului

Schimbăm utilizatorul în root (de exemplu sudo -i) și creăm un director pentru demonstrație:
Vom folosi acest director pentru toate exemplele următoare.

2. Overwrite vs Append: > și >>

Demonstrăm diferența dintre suprascriere (>) și adăugare la sfârșit (>>):
Explicație:
  • > suprascrie fișierul: după a doua utilizare cu >, session.log conține doar “Session Start”.
  • >> adaugă la sfârșitul fișierului, păstrând conținutul anterior.
Atenție: > va suprascrie fișiere existente fără avertisment. Verificați întotdeauna că nu pierdeți date importante înainte de a rula comenzi cu >.

3. Redirecționarea erorilor (stderr)

Mesajele de eroare sunt trimise pe descriptorul 2 (stderr). Exemplu: listarea unui fișier inexistent produce o eroare pe stderr.
Pentru a redirecționa doar stderr într-un fișier:
Observații:
  • 2> suprascrie fișierul error.
  • 2>> adaugă la sfârșitul fișierului error.
  • 1> sau implicitul (fără 1>) redirecționează stdout; 2> afectează stderr.

4. Redirect stdout și stderr în fișiere diferite

Puteți redirecționa stdout și stderr în fișiere separate. Exemplu cu find:
Acest pattern este util când doriți să analizați rezultatele normale separat de mesajele de eroare (de exemplu pentru logging sau diagnosticare).

5. Suprimarea output-ului cu /dev/null

Dacă vrei să ignori output-ul, poți redirecționa la /dev/null — efectiv arunci datele.
Redirecționarea către /dev/null elimină outputul. Exemplu: command > /dev/null 2>&1 trimite atât stdout cât și stderr către /dev/null, suprimând tot outputul comenzii.
Exemple uzuale:
  • command > /dev/null — suprimă stdout
  • command 2> /dev/null — suprimă stderr
  • command > /dev/null 2>&1 — suprimă ambele (stdout și stderr)

6. Pipe-uri (|) — conectarea comenzilor

Pipe-urile trimit stdout-ul unei comenzi ca stdin pentru o altă comandă. Sunt foarte utile pentru filtrare și prelucrare în lanț. Exemplu: găsim rândurile cu student în /etc/passwd și apoi numărăm liniile/word/bytes cu wc:
Explicație:
  • cat /etc/passwd | grep student afișează liniile care conțin student.
  • | wc arată numărul de linii, cuvinte și octeți (în exemplu: 1 linie, 1 cuvânt, 52 octeți).

7. tee — scrie simultan la fișier și la terminal

Dacă vrei să vezi outputul în terminal și în același timp să îl salvezi într-un fișier, folosește tee. Implicit tee suprascrie fișierul; cu -a faci append.
Note:
  • tee output_echo — suprascrie output_echo.
  • tee -a output_echo — adaugă la sfârșitul fișierului (append).

8. Rezumat rapid: operatori de redirecționare

Resurse și referințe

Aceasta încheie demonstrația. Folosind redirecționarea, pipe-urile și tee, puteți construi fluxuri de lucru robuste pentru logging, procesare batch și automatizare. Mult succes la exersat!

Watch Video

Practice Lab