Filhåndtering

Hvad er / dev / null og hvordan man bruger det

Hvad er / dev / null og hvordan man bruger det
Linux er et interessant operativsystem, der er vært for nogle virtuelle enheder til mange formål. For så vidt 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 føde 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 speciel fil, der findes i hvert eneste Linux-system. Men i modsætning til de fleste andre virtuelle filer bruges det til at skrive i stedet for at læse. Uanset hvad du skriver til / dev / null, vil det blive kasseret, glemt i tomrummet. Det er kendt som null-enheden i et UNIX-system.

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

Forudsætninger

Før vi dykker dybt ned i brugen af ​​/ dev / null, skal vi have en klar forståelse af stdout og stderr datastrøm. Tjek denne detaljerede guide til stdin, stderr, og stdout.

Lad os få en hurtig opdatering. Hver gang et kommandolinjeprogram køres, genererer det to output. Outputtet går til stdout og fejlen (hvis genereret) går til stderr. Begge disse datastrømme er som standard tilknyttet terminalen.

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

$ echo “Hello World”

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

$ ekko $?

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

$ adfadsf
$ ekko $?

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

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

$ echo "Hello World"> log.txt

Den følgende kommando omdirigerer stderr til en tekstfil.

$ asdfadsa 2> fejl.txt

Brug af / dev / null

Omdirigerer output til / dev / null

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

$ grep -r hej / sys /

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

$ grep -r hej / sys / 2> / dev / null

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.

$ ping google.com

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

$ ping google.com 1> / dev / null

Her er indholdet af stdout dumpes til / dev / null, hvilket kun efterlader fejlene.

Omdiriger al output til / dev / null

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

$ grep -r hej / sys /> / dev / null 2> & 1

Lad os bryde denne kommando lidt. For det første dumper vi alt det stdout til / dev / null. Derefter beder vi i anden del bash om at sende stderr til stdout. I dette eksempel er der intet at outputte. Men hvis du er forvirret, kan du altid kontrollere, om kommandoen kørte med succes.

$ ekko $?

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

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

$ grep -r hej / sys / &> / dev / null

Andre eksempler

Dette er interessant. Husk 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 sekvensens læsehastighed på din disk. Det er selvfølgelig ikke en nøjagtig måling. For en hurtig test er det dog ret nyttigt.

$ dd hvis = af = / dev / null status = status bs = 1M iflag = 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 -O / dev / null

Afsluttende tanker

Forhåbentlig har du en klar forståelse af, hvad denne / dev / null-fil er. Det er en speciel enhed, der, hvis den er skrevet til den, kasseres, og hvis den læses fra, læser den nul. Det virkelige potentiale ved denne interessante funktion er i interessante bash-scripts.

Er du interesseret i bash scripting? Tjek begyndervejledningen til bash scripting.

god fornøjelse!

Shadow of the Tomb Raider til Linux-vejledning
Shadow of the Tomb Raider er den tolvte tilføjelse til Tomb Raider-serien - en action-adventure-spilfranchise oprettet af Eidos Montreal. Spillet blev...
Sådan styrkes FPS i Linux?
FPS står for Billeder i sekundet. FPS's opgave er at måle billedhastigheden i videoafspilninger eller spiloptræden. I enkle ord betegnes antallet af u...
Top Oculus App Lab-spil
Hvis du er Oculus-headset-ejer, skal du være opmærksom på sideloading. Sideladning er processen med at installere ikke-butiksindhold på dit headset. S...