Hvad er /dev /null og hvordan man bruger det

What Is Dev Null How Use It



Linux er et interessant operativsystem, der er vært for nogle virtuelle enheder til mange formål. Hvad angår programmer, der kører i systemet, fungerer disse virtuelle enheder som om de er rigtige filer. Værktøjer kan anmode om og indføre data fra disse kilder. Dataene genereres af operativsystemet i stedet for at læse dem fra en disk.

Et sådant eksempel er /dev /null. Det er en særlig fil, der findes i hvert enkelt Linux -system. I modsætning til de fleste andre virtuelle filer bruges den i stedet for at læse, til at skrive. Uanset hvad du skriver til /dev /null vil blive kasseret, glemt i tomrummet. Det er kendt som nul -enheden i et UNIX -system.







Hvorfor vil du kassere noget i tomrummet? Lad os tjekke, hvad /dev /null er og dets anvendelse.



Forudsætninger

Inden vi dykker dybt ned i brugen af ​​/dev /null, skal vi have en klar forståelse af stdout og stderr datastrøm. Tjek det her dybdegående guide på stdin , stderr , og stdout .



Lad os få en hurtig opdatering. Når et kommandolinjeværktøj køres, genererer det to output. Outputtet går til stdout og fejlen (hvis den genereres) går til stderr . Som standard er begge disse datastrømme tilknyttet terminalen.





For eksempel vil den følgende kommando udskrive strengen inden for det dobbelte anførselstegn. Her gemmes output i stdout .

$smed udHej Verden



Den næste kommando viser os exitstatus for den tidligere kørte kommando.

$smed ud $?

Da den forrige kommando kørte med succes, er exit -status 0. Ellers vil exit -status være en anden. Hvad sker der, når du prøver at køre en ugyldig kommando?

$ adfadsf
$smed ud $?

Nu skal vi vide om filbeskrivelsen. I UNIX -økosystemet er disse heltalsværdier, der er tildelt en fil. Begge stdout (filbeskrivelse = 1) og stderr (filbeskrivelse = 2) har en specifik filbeskrivelse. Ved hjælp af filbeskrivelsen (1 og 2 i denne situation) kan vi omdirigere stdout og stderr til andre filer.

For starter vil det følgende eksempel omdirigere stdout af ekkokommandoen til en tekstfil. Her specificerede vi ikke filbeskrivelsen. Hvis ikke angivet, vil bash bruge stdout som standard.

$smed udHej Verden>log.txt

Følgende kommando omdirigerer stderr til en tekstfil.

$asdfadsa2>error.txt

Brug /dev /null

Omdirigerer output til /dev /null

Nu er vi klar til at lære at bruge /dev /null. Lad os først se, hvordan du filtrerer normal output og fejl. I den følgende kommando vil grep forsøge at søge efter en streng (hej, i dette tilfælde) i /sys biblioteket.

$greb -rHej/sys/

Det vil dog generere en masse fejl, da grep ikke kan få adgang til et antal filer uden root -privilegier. I et sådant tilfælde vil det resultere i tilladelse nægtede fejl. Nu kan vi ved hjælp af omdirigering få et klarere output.

$greb -rHej/sys/ 2> /dev/nul

Outputtet ser meget bedre ud, ikke? Ikke noget! I dette tilfælde har grep ikke adgang til mange filer, og dem, der er tilgængelige, har ikke strengen hej.

I det følgende eksempel pinger vi Google.

$pingGoogle com

Vi ønsker dog ikke at se alle de vellykkede ping -resultater. I stedet vil vi kun fokusere på fejlene, når ping ikke kunne nå Google. Hvordan gør vi det?

$pingGoogle com1> /dev/nul

Her er indholdet af stdout dumpes til /dev /null, så kun fejlene efterlades.

Omdiriger alt output til /dev /null

I visse situationer er output muligvis slet ikke nyttigt. Ved hjælp af omdirigering kan vi dumpe alt output i tomrummet.

$greb -rHej/sys/ > /dev/nul2> &1

Lad os bryde denne kommando lidt. Først dumper vi alt stdout til /dev /null. I anden del fortæller vi bash at sende stderr til stdout . I dette eksempel er der ikke noget at sende. Men hvis du er forvirret, kan du altid kontrollere, om kommandoen kørte med succes.

$smed ud $?

Værdien er 2, fordi kommandoen genererede mange fejl.

Hvis du har en tendens til at glemme filbeskrivelsen af stdout og stderr , vil følgende kommando klare sig fint. Det er et mere generaliseret format af den tidligere kommando. Begge stdout og stderr vil blive omdirigeret til /dev /null.

$greb -rHej/sys/ &> /dev/nul

Andre eksempler

Dette er en interessant. Kan du huske dd -værktøjet? Det er et kraftfuldt værktøj til konvertering og kopiering af filer. Lær mere om dd. Ved hjælp af dd kan vi teste den sekventielle læsehastighed på din disk. Selvfølgelig er det ikke en nøjagtig måling. Men for en hurtig test er det ret nyttigt.

$dd hvis=<stor_fil> af=/dev/nulstatus= fremskridtbs= 1 mioiflag= direkte

Her har jeg brugt Ubuntu 18.04.4 ISO som den store fil.

På samme måde kan du også teste downloadhastigheden på din internetforbindelse.

$wget -ELLER /dev/nul<stor_fil_link>

Endelige tanker

Forhåbentlig har du en klar forståelse af, hvad denne /dev /null -fil er. Det er en særlig enhed, der, hvis den skrives til den, kasserer, og hvis den læses fra, læser null. Det interessante potentiale i denne interessante funktion er i interessante bash -scripts.

Er du interesseret i bash scripting? Check ud begyndervejledningen til bash scripting .

God fornøjelse!