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!