I tekniske termer er “/ dev / null” en virtuell enhetsfil. Når det gjelder programmer, blir disse behandlet akkurat som ekte filer. Verktøy kan be om data fra denne typen kilde, og operativsystemet mater dem data. Men i stedet for å lese fra disk genererer operativsystemet disse dataene dynamisk. Et eksempel på en slik fil er “/ dev / zero.”
I dette tilfellet vil du imidlertid skrive til en enhetsfil. Uansett hva du skriver til “/ dev / null” kastes, glemmes, kastes i tomrommet. For å forstå hvorfor dette er nyttig, må du først ha en grunnleggende forståelse av standard utgang og standardfeil i Linux- eller * nix-operativsystemer.
stdout og stder
Et kommandolinjeverktøy kan generere to typer utdata. Standard utgang sendes til stdout. Feil sendes til stderr.
Som standard er stdout og stderr tilknyttet terminalvinduet (eller konsollen). Dette betyr at alt som sendes til stdout og stderr, normalt vises på skjermen. Men gjennom omadresseringer av skall kan du endre denne oppførselen. For eksempel kan du omdirigere stdout til en fil. I stedet for å vise utdata på skjermen, blir den lagret i en fil som du kan lese senere – eller du kan omdirigere stdout til en fysisk enhet, for eksempel en digital LED eller LCD-skjerm.

En full artikkel om rør og omdirigeringer er tilgjengelig hvis du vil lære mer.
- Med
2>
du viderekobler standard feilmeldinger. Eksempel:2>/dev/null
eller2>/home/user/error.log
. - Med
1>
du omdirigerer standard utdata. - Med
&>
du omdirigerer både standardfeil og standard utgang.
Bruk / dev / null for å kvitte deg med produksjonen du ikke trenger
Siden det er to typer utdata, standard utgang og standard feil, er det første tilfellet å filtrere ut den ene eller den andre typen. Det er lettere å forstå gjennom et praktisk eksempel. La oss si at du leter etter en streng i “/ sys” for å finne filer som refererer til strøminnstillinger.
grep -r power /sys/
Det vil være mange filer som en vanlig, ikke-rotbruker ikke kan lese. Dette vil føre til mange feil “Tillatelse nektet”.

Disse roter utdataene og gjør det vanskeligere å få øye på resultatene du leter etter. Siden “Tillatelse nektet” -feil er en del av stderr, kan du omdirigere dem til “/ dev / null.”
grep -r power /sys/ 2>/dev/null

Som du ser er dette mye lettere å lese.
I andre tilfeller kan det være nyttig å gjøre det motsatte: filtrer ut standardutdata slik at du bare kan se feil.
ping google.com 1>/dev/null

Skjermbildet ovenfor viser at, uten omdirigering, viser ping sin normale utgang når den kan nå destinasjonsmaskinen. I den andre kommandoen vises ingenting mens nettverket er online, men så snart det kobles fra, vises bare feilmeldinger.
Du kan omdirigere både stdout og stderr til to forskjellige steder.
ping google.com 1>/dev/null 2>error.log
I dette tilfellet vil ikke stdout-meldinger vises i det hele tatt, og feilmeldinger vil bli lagret i “error.log” -filen.
Viderekoble all utgang til / dev / null
Noen ganger er det nyttig å kvitte seg med all produksjon. Det er to måter å gjøre dette på.
grep -r power /sys/ >/dev/null 2>&1
Strengen >/dev/null
betyr “send stdout til / dev / null,” og den andre delen, 2>&1
, betyr sende stderr til stdout. I dette tilfellet må du referere til stdout som “& 1” i stedet for bare “1.” Å skrive “2> 1” vil bare omdirigere stdout til en fil som heter “1.”
Det som er viktig å merke seg her er at bestillingen er viktig. Hvis du reverserer omdirigeringsparametrene slik:
grep -r power /sys/ 2>&1 >/dev/null
det vil ikke fungere som beregnet. Det er fordi så snart 2>&1
tolkes, sendes stderr til stdout og vises på skjermen. Deretter blir stdout undertrykt når den sendes til “/ dev / null.” Det endelige resultatet er at du vil se feil på skjermen i stedet for å undertrykke all utdata. Hvis du ikke kan huske riktig rekkefølge, er det en enklere viderekobling som er mye lettere å skrive:
grep -r power /sys/ &>/dev/null
I dette tilfellet, &>/dev/null
tilsvarer å si “omdirigere både stdout og stderr til dette stedet.”
Andre eksempler der det kan være nyttig å omdirigere til / dev / null
Si at du vil se hvor raskt disken din kan lese sekvensielle data. Testen er ikke ekstremt nøyaktig, men nøyaktig nok. Du kan bruke dd
for dette, men dd enten utganger til stdout eller kan bli bedt om å skrive til en fil. Med of=/dev/null
du kan be dd om å skrive til denne virtuelle filen. Du trenger ikke engang å bruke omadresseringer av skall her. if=
angir plasseringen til inndatafilen som skal leses; of=
angir navnet på utdatafilen, hvor du skal skrive.
dd if=debian-disk.qcow2 of=/dev/null status=progress bs=1M iflag=direct

I noen scenarier vil du kanskje se hvor raskt du kan laste ned fra en server. Men du vil ikke skrive til disken din unødvendig. Enkelt nok, ikke skriv til en vanlig fil, skriv til “/ dev / null.”
wget -O /dev/null http://ftp.halifax.rwth-aachen.de/ubuntu-releases/18.04/ubuntu-18.04.2-desktop-amd64.iso
Konklusjon
Forhåpentligvis kan eksemplene i denne artikkelen inspirere deg til å finne dine egne kreative måter å bruke “/ dev / null.”
Kjenner du en interessant brukstilfelle for denne spesielle enhetsfilen? Legg igjen en kommentar nedenfor og del kunnskapen!