🎙️ Sisteme Linux: Canale de comunicare în terminal

Imagine: 🎙️ Sisteme Linux: Canale de comunicare în terminal

🎙️ Sisteme Linux: Canale de comunicare în terminal

În acest tutorial vom discuta despre ce face fiecare canal de acces al terminalului și cum îl putem folosi pentru a ne îmbunătății aplicațiile, script-urile sau pur și simplu, utilizarea generală în linia de comandă a sistemului de operare Linux.

Comunicarea cu terminalul?

Pentru a comunica cu terminalul, toate aplicațiile și comenzile rulate în Shell folosesc trei canale specifice de comunicare. Acestea sunt: intrarea standard, ieșirea standard și ieșirea de eroare standard.

După cum spune și numele fiecăruia dintre canalele de mai sus, fiecare are un rol bine definit. Canalul de intrare standard, denumit și stdin, este folosit pentru a primii date, argumente sau comenzi de la utilizator, de la alte aplicații sau de la alte comenzi.

Ieșirea standard, stdout, este utilizată pentru afișarea rezultatelor și a informațiilor obținute în urma executării unei comenzi sau aplicații.

Ieșirea de eroare standard, stderr, este dedicată afișării mesajelor de eroare și a altor informații de diagnosticare (debugging) rezultate din probleme în timpul execuției unei comenzi sau aplicații.

Utilizarea de canale specifice

În mod normal, default, sistemul de operare preia datele, respectiv afișează conținutul în fereastra de terminal. Cu ajutorul câtorva operatori putem modifica acest lucru, pentru a folosi în avantajul nostru, mai eficient și mai rapid comenzile.

De exemplu, avem situația în care dorim să filtrăm anumite rânduri din output-ul unei comenzi, pentru asta suntem nevoiți să redirectăm ieșirea primei comenzi în intrarea celei de-a doua, sau să folosim un pipe.

Altă situație ar fi cea în care dorim să avem un fișier special pentru erori, sau chiar, să renunțăm la afișarea acestora, ca urmare va trebui să redirectăm ieșirea de eroare standard la /dev/null (blackhole) sau un fișier anume.

Pentru ieșirea standard avem situații în care ne folosim de fișiere, în care vom redirecta output-ul primit de la o comandă.

Redirecționarea intrării (input redirection) și Pipe

Redirecționarea intrării permite furnizarea datelor de intrare dintr-un fișier sau din altă comandă către o aplicație sau comandă nouă. Această metodă este folosită pentru a înlocui introducerea manuală a datelor la linia de terminal.

Pentru a realiza această operație ne vom folosi de operatorul <. Mai jos poți vedea sintaxa generală și cum am redirectat conținutul fișierului „fisier” la comanda grep.

$ comanda < intrare.txt
input redirection

Totuși, există situația când dorim să trimitem ieșirea unei comenzi la intrarea alteia. În acest caz, cel mai simplu este să folosim operatorul pipe |. Comenzile înlănțuite prin pipe-uri formează așa-numitele Pipeline-uri sau Onelinere. Putem înlănțui câte comenzi dorim!

$ comanda_cu_iesirea | comanda_cu_intrarea
pipe

Redirecționarea ieșirii (output redirection)

Redirecționarea ieșirii permite afișarea datelor în anumite formate, și anumite locuri sau fișiere, pentru a prelucra ulterior datele obținute. Prin această metodă schimbăm tipul afișării.

În Linux sau alte sisteme care folosesc Shell-ul Bash, vom folosi operatorul >. Sintaxa generală este asemănătoare celei pentru input redirection. În imaginea următoare poți vedea cum am afișat listarea conținutului folder-ului curent în fișierul „fisier”.

$ comanda > iesire.txt
output redirection

Totoadată, mai există o metodă pentru redirecționarea ieșirii, aceasta nu rescrie, ci doar adaugă (append), conținutul la finalul unui fișier. Putem face asta folosind operatorul >>. Mare atenție, dacă nu doriți să ștergeți conținutul deja existent în fișier!

$ comanda >> iesire.txt
append output

Redirecționarea ieșirii de eroare (error redirection)

Redirecționarea erorilor se face în mod normal, în același loc cu cea de ieșire standard, pentru a asigura asta putem folosi operatorul 2>&1. În caz contrar, dacă dorim să afișăm erorile undeva și output-ul altundeva vom folosi operatorul 2>. După cum se observă, primul operator trimite la canalul 1 (&1) eroarea standard.

Sintaxa generală este simplă, în exemplul din imagine se observă cum am renunțat la afișarea erorilor, le vom redirecta în fișierul /dev/null.

$ comanda 2> eroare.txt error redirection
Andrei Frîntu
Andrei Frîntu

Fondatorul platformei - mentor Academia

LinkedIn Instagram GitHub
© Copyright 2024 - CodulLuiAndrei.ro - Toate drepturile sunt rezervate