Redirecționare intrare ieșire în exemple Linux/Unix
⚡ Rezumat inteligent
Redirecționarea în Linux și Unix modifică locul în care o comandă citește intrarea sau trimite ieșirea, swapping tastatura și ecranul pentru fișiere sau dispozitive care utilizează operatori precum semnul mai mare decât, semnul mai mic decât și operatorul de adăugare.

Redirecționarea este una dintre cele mai utile caracteristici ale Linux și shell-ul Unix, deoarece vă permite să decideți unde o comandă își citește intrarea și unde își trimite ieșirea. Această pagină explică redirecționarea ieșirii, intrării și erorilor cu exemple practice.
Ce este redirecționarea?
Redirecționarea este o caracteristică din Linux care permite, atunci când executați o comandă, să modificați dispozitivele standard de intrare și ieșire. Fluxul de lucru de bază al oricărui Comanda Linux este că primește o intrare și oferă o ieșire.
- Dispozitivul de intrare standard (stdin) este tastatura.
- Dispozitivul standard de ieșire (stdout) este ecranul.
Cu redirecționare, intrarea și ieșirea standard de mai sus pot fi modificate.
Redirecționare ieșire
Graficul de mai jos marchează începutul exemplelor de redirecționare a ieșirii.
Simbolul '>' este utilizat pentru redirecționarea ieșirii (STDOUT).
Exemplu:
ls -al > listings
Aici, rezultatul comenzii ls -al este redirecționat către fișierul „listings” în loc de ecranul dvs. Captura de ecran de mai jos prezintă rezultatul.
Notă: Folosiți numele de fișier corect atunci când redirecționați ieșirea comenzii către un fișier. Dacă există deja un fișier cu același nume, comanda redirecționată îi șterge conținutul și apoi îl suprascrie.
Dacă nu doriți ca un fișier să fie suprascris, dar doriți să adăugați mai mult conținut la un fișier existent, utilizați operatorul „>>”. Captura de ecran de mai jos arată conținutul căruia i s-a adăugat „>>”.
Puteți redirecționa ieșirea standard nu doar către fișiere, ci și către dispozitive.
$ cat music.mp3 > /dev/audio
Comanda cat citește fișierul music.mp3 și trimite ieșirea către /dev/audio, care este dispozitivul audio. Dacă configurația sunetului de pe PC este corectă, această comandă redă fișierul muzical.mp3.
Redirecționare de intrare
Graficul de mai jos prezintă redirecționarea inputului.
Simbolul „<” este utilizat pentru redirecționarea intrării (STDIN).
Exemplu: Programul de e-mail din Linux vă poate ajuta să trimiteți e-mailuri din terminal.
Puteți tasta conținutul e-mailului folosind tastatura, dispozitivul standard de introducere a datelor. Dar dacă doriți să atașați un fișier la e-mail, puteți utiliza operatorul de redirecționare a intrării în formatul următor.
mail -s "Subject" to-address < Filename
Captura de ecran de mai jos arată comanda mail citind un fișier ca intrare.
Aceasta atașează fișierul la e-mail, iar acesta este trimis destinatarului.
Exemplele de mai sus au fost simple. Acum, să analizăm câteva tehnici avansate de redirecționare care utilizează descriptorii de fișiere.
Fișier Descriptsau (FD)
În Linux și Unix, totul este un fișier. Fișierele obișnuite, directoarele și chiar dispozitivele sunt fișiere. Fiecare fișier are un număr asociat numit descriptor de fișier (FD).
Diagrama de mai jos prezintă fluxurile standard și descriptorii lor de fișiere.
Ecranul are și un descriptor de fișier. Când un program este executat, ieșirea este trimisă către descriptorul de fișier al ecranului, iar rezultatul programului este afișat pe monitor. Dacă rezultatul ar fi trimis către descriptorul de fișier al imprimantei, rezultatul programului ar fi imprimat.
Redirecționare eroare
Ori de câte ori executați un program sau o comandă la terminal, trei fișiere sunt întotdeauna deschise, și anume intrarea standard, ieșirea standard și eroarea standard.
Aceste fișiere sunt întotdeauna prezente de fiecare dată când rulează un program. Așa cum s-a explicat anterior, fiecăruia dintre aceste fișiere îi este asociat un descriptor de fișier.
| Fișier | Fișier Descriptor |
|---|---|
| Intrare standard STDIN | 0 |
| Ieșire standard STDOUT | 1 |
| Eroare standard STDERR | 2 |
În mod implicit, fluxul de erori este afișat pe ecran. Redirecționarea erorilor direcționează erorile către un alt fișier decât ecranul.
De ce redirecționarea erorilor?
Redirecționarea erorilor este una dintre caracteristicile foarte populare ale Unix și Linux.
Utilizatorii frecvenți de Unix știu că multe comenzi dau un număr masiv de erori. De exemplu, în timp ce cauți fișiere, de obicei primești permisiune erori refuzate, care de obicei nu ajută persoana care caută un anumit fișier. În timpul executării scripturilor shell, adesea nu doriți ca mesajele de eroare să aglomereze ieșirea normală a programului.
Soluția este redirecționarea mesajelor de eroare către un fișier.
Exemplu 1
$ myprogram 2>errorsfile
Captura de ecran de mai jos prezintă această comandă în terminal.
Mai sus, executăm un program numit programul_myprogram. Descriptorul de fișier pentru eroarea standard este 2. Folosind „2>”, redirecționăm ieșirea erorii către un fișier numit „errorsfile”. Astfel, ieșirea programului nu este aglomerată cu erori.
Exemplu 2
Iată un alt exemplu care utilizează instrucțiunea find.
find . -name 'my*' 2>error.log
Folosind comanda find, căutăm în directorul curent „.” un fișier al cărui nume începe cu „my” și trimitem orice erori către error.log.
Exemplu 3: Să luăm în considerare un exemplu mai complex.
Administratorii de server listează frecvent directoare și stochează atât erorile, cât și ieșirea standard într-un fișier, care poate fi procesat ulterior. Iată comanda.
ls Documents ABC> dirlist 2>&1
Diagrama de mai jos arată ambele fluxuri capturate într-un singur fișier.
Aici:
- 2>&1 înseamnă că STDERR este redirecționat către aceeași țintă ca și STDOUT (care este fișierul dirlist).
- Ieșirea de eroare este redirecționată către ieșirea standard, care la rândul ei este redirecționată către fișierul dirlist. Prin urmare, ambele fluxuri sunt scrise în fișierul dirlist.
Diagrama de mai jos rezumă modul în care se potrivesc redirecționarea intrării, ieșirii și erorii.






.png)