Errors vs Output: 2>
Linux separă rezultatul unei comenzi în două fluxuri:
- stdout (fluxul 1): rezultatul normal (ce vezi de obicei).
- stderr (fluxul 2): mesajele de eroare.
Când folosești >, se redirecționează doar stdout. Erorile tot apar pe ecran:
ls real.txt fals.txt > iesire.txt
ls: cannot access 'fals.txt': No such file or directory
Listarea pentru real.txt a ajuns în iesire.txt, dar eroarea a rămas pe ecran.
Redirecționarea erorilor cu 2>
ls real.txt fals.txt 2> erori.txt
Acum erorile merg în erori.txt, iar rezultatul normal se afișează pe ecran.
Aruncarea erorilor în /dev/null
/dev/null este o gaură neagră: orice trimiți acolo dispare:
ls real.txt fals.txt 2> /dev/null
Rămâne doar rezultatul reușit; erorile dispar în tăcere.
Combinarea ambelor fluxuri cu 2>&1
ls real.txt fals.txt > tot.txt 2>&1
Asta trimite ambele fluxuri, stdout și stderr, în tot.txt. 2>&1 înseamnă „trimite
fluxul 2 acolo unde merge fluxul 1".
Misiune: Investigația fișierului fantomă
Senzorii stației au semnalat o referință la un fișier numit fantoma.txt care s-ar putea să nu mai existe. Trebuie să verifici ambele fișiere, dar mesajul de eroare îți aglomerează consola principală și vrei să-l depui deoparte.
- Rulează
ls raport.txt fantoma.txtca să verifici ambele fișiere, dar captează doar eroarea într-un fișier numiterori.log. Rezultatul normal trebuie să rămână pe ecran. - Afișează
erori.logca să citești eroarea captată. - Creează un folder numit
jurnaleși mutăerori.logîn el. - Caută în jurnalul captat cuvintele
No suchca să confirmi că defecțiunea a fost înregistrată.
Rezultat așteptat
jurnale/erori.log conține eroarea „No such file" pentru fantoma.txt.