Dacă ați învățat programarea shell, este posibil să fi întâlnit deja ceva de genul /dev/null. În acest articol, vom înțelege ce este și cum este utilizat. Să începem prin a înțelege ce este /dev.
Ce este /dev?
În sistemul de fișiere Linux, totul este un fișier sau un director. Chiar și dispozitivele sunt accesate ca fișiere. Partițiile de hard disk, Pen drive, difuzoare, pentru toate acestea, există un fișier din care acestea sunt accesate. Acum, pentru a înțelege cum sunt accesate dispozitivele ca fișiere, gândiți-vă în acest fel: ce facem cu un fișier? Citim date din el și scriem date în el. Un dispozitiv precum un difuzor poate introduce date pentru a produce sunet, un hard disk poate fi folosit pentru a citi și scrie date, o imprimantă preia intrarea pentru a imprima fișiere etc. Fișierele și dispozitivele sunt similare în acest fel
/dev este un director care stochează toate dispozitivele fizice și virtuale ale unui sistem Linux. Dispozitivele fizice sunt ușor de înțeles, sunt dispozitive tangibile precum pen-drive, difuzoare, imprimante etc. Un sistem Linux are, de asemenea, dispozitive virtuale care acționează ca dispozitiv, dar nu reprezintă un dispozitiv fizic.
Ce este /dev/null?
Este un dispozitiv virtual, care are o proprietate specială: orice date scrise în /dev/null dispar sau dispare. Din cauza acestei caracteristici, se mai numește și bitbucket sau blackhole. Să vedem o demonstrație.
Redirecționați ieșirea către /dev/null

În această demonstrație, puteți vedea că am adăugat câteva date, dar acele date nu au fost stocate. Această caracteristică specială a /dev/null are unele cazuri de utilizare. Să-i vedem.
Utilizarea /dev/null
Deoarece elimină tot ce este scris în el, puteți muta fișierele în /dev/null pentru a le șterge. Dar acesta nu este un caz de utilizare utilizat pe scară largă. Este folosit în principal pentru a elimina ieșirea standard și eroarea standard dintr-o ieșire.
Ce sunt ieșirea standard și eroarea standard?
Ieșirea unei comenzi Linux conține două fluxuri de date: ieșire standard (stdout) și eroare standard (stderr0), în timp ce ieșirea standard este ieșirea normală dacă comanda nu are erori, eroarea standard este eroarea generată de comandă. Ieșirea poate conține atât ieșire standard, cât și intrare standard. Exemplu de stdout și stderr:
Să rulăm următorul script shell
# /bin/sh ls apt update>

Prima comandă a rulat cu succes, dar a doua a generat o eroare. Deoarece stdout și stderr sunt două fluxuri de date separate, acestea pot fi gestionate separat.
Cum se accesează stderr și stdout?
Stdout și stderr sunt fluxuri de date, ambele fiind tratate ca un fișier în Linux. Dacă doriți să efectuați orice acțiune asupra acestora, utilizați un descriptor de fișier care identifică în mod unic fluxul de fișiere. Descriptorul de fișier pentru stdout este 1 și pentru stderr este 2.
Pentru a le accesa separat, să vedem următoarea comandă care este efectuată pe același fișier script care a fost folosit în exemplul anterior.
În aceasta, puteți vedea că rezultatul conține erori standard, dar ieșirea standard nu a fost afișată. Acest lucru se datorează faptului că fluxul stdout a fost trimis la fișierul stdout.txt și puteți vedea că fișierul stdout.txt conține ieșirea standard.
În timp ce scriem un script shell, este posibil să dorim să renunțăm la eroarea standard din rezultat. Indiferent de fluxul pe care vrem să îl suprimăm din ieșire, acel flux de date poate fi scris în /dev/null. Puteți scrie acele date într-un alt fișier, la fel ca în exemplul de mai sus, dar dacă nu aveți nevoie de acele date, de ce ați dori să pierdeți memoria cu ele, este mai bine să le aruncați complet. Să vedem următorul exemplu
Și exact așa, am eliminat stderr din ieșire. Dacă doriți să renunțați la ieșirea completă, puteți utiliza următoarea comandă
Ștergere sigură a fișierelor
„/dev/null” găsește utilitate în ștergerea securizată a fișierelor. Prin redirecționarea „/dev/null” către un fișier, puteți suprascrie efectiv conținutul acestuia cu octeți nuli, ceea ce face dificilă recuperarea oricăror date semnificative.
De exemplu:
Curățarea fișierelor jurnal
Fișierele jurnal pot acumula date substanțiale în timp. Pentru a șterge fișierele jurnal fără a întrerupe serviciile care rulează, le puteți redirecționa conținutul către „/dev/null”.
De exemplu:
Sfaturi și trucuri:
- Redirecționarea ieșirii standard către „/dev/null”: „comandă> /dev/null”
- Eroare standard de redirecționare către „/dev/null”: „comanda 2> /dev/null”
- Redirecționarea atât a ieșirii, cât și a erorii către „/dev/null”: „comandă>/dev/null 2>&1”
Concluzie
În acest articol am discutat despre `/dev/null’ în Linux este o gaură neagră virtuală în care datele dispar atunci când sunt scrise în ea. Este folosit în mod obișnuit pentru a elimina ieșirile și erorile, făcând execuția comenzii mai curată. Poate fi folosit și pentru ștergerea în siguranță a fișierelor și curățarea fișierelor jurnal. Înțelegerea funcționalității sale permite operațiuni eficiente de linie de comandă în Linux.