Hva er /dev /null og hvordan du bruker det

Hva er /dev /null og hvordan du bruker det
Linux er et interessant operativsystem som er vert for noen virtuelle enheter for mange formål. Når det gjelder programmer som kjører i systemet, fungerer disse virtuelle enhetene som om de er virkelige filer. Verktøy kan be om og mate data fra disse kildene. Dataene genereres av operativsystemet i stedet for å lese dem fra en disk.

Et slikt eksempel er /dev /null. Det er en spesiell fil som er til stede i hvert eneste Linux -system. I motsetning til de fleste andre virtuelle filer, i stedet for å lese, er det imidlertid brukt til å skrive. Uansett hva du skriver til /dev /null vil bli kastet, glemt i tomrommet. Det er kjent som NULL -enheten i et UNIX -system.

Hvorfor vil du kaste noe inn i tomrommet? La oss sjekke ut hva /dev /null er og dets bruk.

Forutsetninger

Før vi dykker dypt inn i bruken av /dev /null, må vi ha et klart grep om stdout og Stderr data strøm. Sjekk ut denne dyptgående guiden på stdin, Stderr, og stdout.

La oss få en rask oppdatering. Når ethvert kommandolinjeverktøy kjøres, genererer det to utganger. Utgangen går til stdout og feilen (hvis generert) går til Stderr. Som standard er begge disse datastrømmene tilknyttet terminalen.

For eksempel vil følgende kommando skrive ut strengen i det doble anførselstegn. Her lagres utgangen i stdout.

$ ekko “Hello World”

Neste kommando vil vise oss utgangsstatusen til den tidligere kjørte kommandoen.

$ ekko $?

Ettersom den forrige kommandoen kjørte vellykket, er utgangsstatusen 0. Ellers vil utgangsstatusen være annerledes. Hva skjer når du prøver å kjøre en ugyldig kommando?

$ adfadsf
$ ekko $?

Nå må vi vite om filbeskrivelsen. I UNIX -økosystemet er dette heltallverdier som er tilordnet en fil. Både stdout (Filbeskrivelse = 1) og Stderr (Filbeskrivelse = 2) har en spesifikk filbeskrivelse. Ved hjelp av filbeskrivelsen (1 og 2 i denne situasjonen) kan vi omdirigere stdout og Stderr til andre filer.

For startpakke vil følgende eksempel omdirigere stdout av ekkokommandoen til en tekstfil. Her spesifiserte vi ikke filbeskrivelsen. Hvis ikke spesifisert, vil Bash bruke stdout Som standard.

$ ECHO “Hello World”> Logg.tekst

Følgende kommando vil omdirigere Stderr til en tekstfil.

$ asdfadsa 2> feil.tekst

Bruker /dev /null

Omdirigere utdata til /dev /null

Nå er vi klare til å lære å bruke /dev /null. La oss først sjekke ut hvordan du filtrerer normal utgang og feil. I den følgende kommandoen vil GREP prøve å søke etter en streng (hei, i dette tilfellet) i "/sys" -katalogen.

$ grep -r hallo /sys /

Imidlertid vil det generere mye feil som uten rotprivilegium, GREP har ikke tilgang til et antall filer. I et slikt tilfelle vil det resultere i "tillatelse" feil ". Nå, ved å bruke omdirigering, kan vi få en klarere produksjon.

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

Utgangen ser mye bedre ut, ikke sant? Ingenting! I dette tilfellet har GREP ikke tilgang til mange filer, og de som er tilgjengelige har ikke strengen "Hello".

I det følgende eksemplet pakker vi Google.

$ ping google.com

Vi vil imidlertid ikke se alle de vellykkede pingresultatene. I stedet vil vi bare fokusere på feilene når ping ikke kunne nå Google. Hvordan gjør vi det?

$ ping google.com 1> /dev /null

Her, innholdet i stdout blir dumpet til /dev /null, og etterlater bare feilene.

Omdirigere all output til /dev /null

I visse situasjoner kan det hende at utgangen ikke er nyttig i det hele tatt. Ved hjelp av omdirigering kan vi dumpe all utgangen i tomrommet.

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

La oss bryte denne kommandoen litt. Først dumper vi alle stdout til /dev /null. Da ber vi i den andre delen Bash å sende Stderr til stdout. I dette eksemplet er det ingenting å sende ut. Imidlertid, hvis du er forvirret, kan du alltid sjekke om kommandoen kjørte vellykket.

$ ekko $?

Verdien er 2 fordi kommandoen genererte mange feil.

Hvis du har en tendens til å glemme filbeskrivelsen til stdout og Stderr, Følgende kommando vil gjøre det bra. Det er et mer generalisert format av forrige kommando. Både stdout og Stderr vil bli omdirigert til /dev /null.

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

Andre eksempler

Dette er interessant. Husk DD -verktøyet? Det er et kraftig verktøy for å konvertere og kopiere filer. Lær mer om DD. Ved hjelp av DD kan vi teste den sekvensielle lesehastigheten på disken din. Selvfølgelig er det ikke en nøyaktig måling. For en rask test er det imidlertid ganske nyttig.

$ dd hvis = av =/dev/null status = fremgang bs = 1m iflag = direkte

Her har jeg brukt Ubuntu 18.04.4 ISO som den store filen.

Tilsvarende kan du også teste ned nedlastingshastigheten til internettforbindelsen din.

$ wget -o /dev /null

Siste tanker

Forhåpentligvis har du en klar forståelse av hva denne /dev /null -filen er. Det er en spesiell enhet som, hvis det er skrevet til den, kaster og hvis du leses fra, leser NULL. Det sanne potensialet med denne interessante egenskapen er i interessante bashskript.

Er du interessert i bash -skripting? Sjekk ut nybegynnerguiden til bash scripting.

Nyt!