Què és / dev / null i com utilitzar-lo

What Is Dev Null How Use It



Linux és un interessant sistema operatiu que allotja alguns dispositius virtuals amb molts propòsits. Pel que fa als programes que s’executen al sistema, aquests dispositius virtuals actuen com si fossin fitxers reals. Les eines poden sol·licitar i alimentar dades d’aquestes fonts. Les dades són generades pel SO en lloc de llegir-les des d’un disc.

Un d’aquests exemples és / dev / null. És un fitxer especial que es troba a tots els sistemes Linux. Tanmateix, a diferència de la majoria d’altres fitxers virtuals, en lloc de llegir, s’utilitza per escriure. Tot el que escriviu a / dev / null serà descartat, oblidat al buit. Es coneix com el dispositiu nul d’un sistema UNIX.







Per què voleu descartar alguna cosa al buit? Vegem què és / dev / null i el seu ús.



Requisits previs

Abans d’endinsar-nos en l’ús de / dev / null, hem de conèixer clarament el stdout i stderr flux de dades. Mireu això guia en profunditat stdin , stderr , i stdout .



Fem una actualització ràpida. Sempre que s’executa qualsevol utilitat de línia d’ordres, genera dues sortides. La sortida es dirigeix ​​a stdout i l'error (si es genera) va a stderr . Per defecte, aquests dos fluxos de dades s’associen al terminal.





Per exemple, l'ordre següent imprimirà la cadena dins de les cometes dobles. Aquí, la sortida s’emmagatzema a stdout .

$troboHola món



La següent ordre ens mostrarà l'estat de sortida de l'ordre executada anteriorment.

$trobo $?

Com que l'ordre anterior s'ha executat correctament, l'estat de sortida és 0. En cas contrari, l'estat de sortida serà diferent. Què passa quan proveu d'executar una ordre no vàlida?

$ adfadsf
$trobo $?

Ara, hem de conèixer el descriptor de fitxers. A l’ecosistema UNIX, es tracta de valors enters assignats a un fitxer. Tots dos stdout (descriptor de fitxer = 1) i stderr (descriptor de fitxers = 2) tenen un descriptor de fitxer específic. Mitjançant el descriptor de fitxers (1 i 2 en aquesta situació), podem redirigir el fitxer stdout i stderr a altres fitxers.

Per començar, el següent exemple redirigirà el fitxer stdout de l'ordre echo a un fitxer de text. Aquí no hem especificat el descriptor del fitxer. Si no s'especifica, s'utilitzarà bash stdout per defecte.

$troboHola món>log.txt

La següent ordre redirigirà el fitxer stderr a un fitxer de text.

$asdfadsa2>error.txt

Utilitzant / dev / null

Redirecció de la sortida a / dev / null

Ara estem preparats per aprendre a utilitzar / dev / null. En primer lloc, comprovem com filtrar la sortida i l’error normals. En l'ordre següent, grep intentarà cercar una cadena (hola, en aquest cas) al directori / sys.

$adherència -rHola/sys/

Tot i això, generarà molts errors, ja que sense privilegis d’arrel, grep no pot accedir a diversos fitxers. En aquest cas, donarà lloc a errors denegats pel permís. Ara, mitjançant la redirecció, podem obtenir una sortida més clara.

$adherència -rHola/sys/ 2> /dev/nul

La sortida es veu molt millor, oi? Res! En aquest cas, grep no té accés a molts fitxers i els accessibles no tenen la cadena hola.

A l'exemple següent, farem ping a Google.

$pinggoogle.com

Tot i això, no volem veure tots aquests resultats de ping reeixits. En canvi, només volem centrar-nos en els errors quan el ping no ha pogut arribar a Google. Com ho fem?

$pinggoogle.com1> /dev/nul

Aquí, el contingut de stdout es bolquen a / dev / null, deixant només els errors.

Redirigiu tota la sortida a / dev / null

En determinades situacions, la sortida pot no ser gens útil. Mitjançant la redirecció, podem bolcar tota la sortida al buit.

$adherència -rHola/sys/ > /dev/nul2> &1

Trencem una mica aquesta ordre. En primer lloc, estem abocant-ho tot stdout a / dev / null. A continuació, a la segona part, li diem a bash que enviï stderr a stdout . En aquest exemple, no hi ha res a produir. Tot i això, si esteu confós, sempre podeu comprovar si l’ordre s’ha executat correctament.

$trobo $?

El valor és 2 perquè l'ordre va generar molts errors.

Si tendeix a oblidar el descriptor de fitxers de stdout i stderr , l'ordre següent funcionarà bé. És un format més generalitzat de l'ordre anterior. Tots dos stdout i stderr es redirigirà a / dev / null.

$adherència -rHola/sys/ &> /dev/nul

Altres exemples

Aquest és un tema interessant. Recordeu l'eina dd? És una potent eina per convertir i copiar fitxers. Més informació sobre dd. Mitjançant dd, podem provar la velocitat de lectura seqüencial del vostre disc. Per descomptat, no és una mesura precisa. Tot i això, per fer una prova ràpida, és força útil.

$dd si=<fitxer_grans> de=/dev/nulestat= progrésbs= 1 Miflag= directe

Aquí he fet servir l’Ubuntu 18.04.4 ISO com a fitxer gran.

De la mateixa manera, també podeu provar la velocitat de descàrrega de la vostra connexió a Internet.

$wget -O /dev/nul<enllaç_fitxer gran>

Pensaments finals

Amb sort, teniu clar el que és aquest fitxer / dev / null. És un dispositiu especial que, si s’hi escriu, es descarta i si es llegeix, es llegeix com a nul. El veritable potencial d'aquesta característica interessant es troba en scripts bash interessants.

T'interessa escriure bash? Fes una ullada la guia per a principiants de bash scripting .

Gaudeix-ne!