Si heu estat aprenent programació de l'intèrpret d'ordres, potser ja us heu trobat amb alguna cosa com /dev/null. En aquest article, entendrem què és i com s'utilitza. Comencem per entendre què és /dev.
Què és /dev?
Al sistema de fitxers Linux, tot és un fitxer o un directori. Fins i tot s'accedeix als dispositius com a fitxers. Les particions del vostre disc dur, Pen drive, altaveus, per a tots aquests, existeix un fitxer des del qual s'hi accedeix. Ara per entendre com s'accedeix als dispositius com a fitxers, penseu-ho d'aquesta manera: què fem amb un fitxer? En llegim dades i hi escrivim dades. Un dispositiu com un altaveu pot introduir dades per produir so, un disc dur es pot utilitzar per llegir i escriure dades, una impressora pren l'entrada per imprimir fitxers, etc. Els fitxers i els dispositius són semblants d'aquesta manera
rebaixa tachada
/dev és un directori que emmagatzema tots els dispositius físics i virtuals d'un sistema Linux. Els dispositius físics són fàcils d'entendre, són dispositius tangibles com pendrive, altaveus, impressores, etc. Un sistema Linux també té dispositius virtuals que actuen com a dispositiu però no representen cap dispositiu físic.
Què és /dev/null?
És un dispositiu virtual, que té una propietat especial: qualsevol dada escrita a /dev/null s'esvaeix o desapareix. Per aquesta característica, també s'anomena bitbucket o forat negre. Vegem una demostració.
Redirigeix la sortida a /dev/null

En aquesta demostració, podeu veure que hem afegit algunes dades, però aquestes dades no es van emmagatzemar. Aquesta característica particular de /dev/null té alguns casos d'ús. Anem a veure'ls.
Ús de /dev/null
Com que descarta qualsevol cosa que hi hagi escrit, podeu moure fitxers a /dev/null per eliminar-los. Però aquest no és un cas d'ús molt utilitzat. S'utilitza principalment per descartar la sortida estàndard i l'error estàndard d'una sortida.
Què són la sortida estàndard i l'error estàndard?
La sortida d'una ordre Linux conté dos fluxos de dades: sortida estàndard (stdout) i error estàndard (stderr0), mentre que la sortida estàndard és la sortida normal si l'ordre no té errors, l'error estàndard és l'error generat per l'ordre. La sortida pot contenir tant una sortida estàndard com una entrada estàndard. Exemple de stdout i stderr:
Executem el següent script de shell
# /bin/sh ls apt update>

La primera ordre s'ha executat correctament, però la segona ha generat un error. Com que stdout i stderr són dos fluxos de dades separats, es poden gestionar per separat.
Com accedir a stderr i stdout?
Stdout i stderr són fluxos de dades, tots dos es tracten com un fitxer a Linux. Si voleu realitzar alguna acció sobre aquests, feu servir un descriptor de fitxer que identifiqui de manera única el flux de fitxers. El descriptor de fitxer per a stdout és 1 i per a stderr és 2.
Per accedir-hi per separat, vegem l'ordre següent que s'executa al mateix fitxer d'script que es va utilitzar a l'exemple anterior.
En això, podeu veure que la sortida conté errors estàndard, però la sortida estàndard no es mostrava. Això es deu al fet que el flux stdout s'ha enviat al fitxer stdout.txt i podeu veure que el fitxer stdout.txt conté la sortida estàndard.
bucle for a l'script de shell
Mentre escrivim un script d'intèrpret d'ordres, és possible que vulguem descartar l'error estàndard de la sortida. Sigui quin sigui el flux que vulguem suprimir de la sortida, aquest flux de dades es pot escriure a /dev/null. Podríeu escriure aquestes dades en un altre fitxer, com l'exemple anterior, però si no teniu cap ús per a aquestes dades, per què voldríeu perdre memòria, és millor descartar-les completament. Vegem el següent exemple
matriu de cadenes de programació c
I així, hem eliminat el stderr de la sortida. Si voleu descartar la sortida completa, podeu utilitzar l'ordre següent
Eliminació segura de fitxers
'/dev/null' troba utilitat en l'eliminació segura de fitxers. En redirigir '/dev/null' a un fitxer, podeu sobreescriure el seu contingut amb bytes nuls de manera efectiva, cosa que dificulta la recuperació de dades significatives.
Per exemple:
Neteja de fitxers de registre
Els fitxers de registre poden acumular dades substancials al llarg del temps. Per esborrar fitxers de registre sense interrompre els serveis en execució, podeu redirigir el seu contingut a '/dev/null'.
Per exemple:
convenció de noms java
Consells i trucs:
- Redirigint la sortida estàndard a '/dev/null': 'command> /dev/null'
- Redirigir l'error estàndard a '/dev/null': 'command 2> /dev/null'
- Redirigint tant la sortida com l'error a '/dev/null': 'command>/dev/null 2>&1'
Conclusió
En aquest article hem parlat de `/dev/null' a Linux és un forat negre virtual on les dades desapareixen quan s'escriuen. S'utilitza habitualment per descartar la sortida i els errors, fent que l'execució d'ordres sigui més neta. També es pot utilitzar per a la supressió segura de fitxers i la neteja de fitxers de registre. Entendre la seva funcionalitat permet operacions eficients de línia d'ordres a Linux.