Hvis du har lært skallprogrammering, kan det hende du allerede har kommet over noe som /dev/null. I denne artikkelen vil vi forstå hva det er og hvordan det brukes. La oss starte med å forstå hva /dev er.
Hva er /dev?
I Linux-filsystemet er alt en fil eller en katalog. Til og med enheter åpnes som filer. Dine harddiskpartisjoner, Pen-stasjon, høyttalere, for alle disse finnes det en fil som disse er tilgjengelig fra. Nå for å forstå hvordan enheter får tilgang til som filer, tenk på det på denne måten: hva gjør vi med en fil? Vi leser data fra den og skriver data til den. En enhet som en høyttaler kan legge inn data for å produsere lyd, en harddisk kan brukes til å lese og skrive data, en skriver tar input for å skrive ut filer osv. Filer og enheter ligner på denne måten
/dev er en katalog som lagrer alle fysiske og virtuelle enheter i et Linux-system. Fysiske enheter er enkle å forstå, de er håndgripelige enheter som penn-stasjon, høyttalere, skrivere osv. Et Linux-system har også virtuelle enheter som fungerer som en enhet, men som ikke representerer noen fysisk enhet.
Hva er /dev/null?
Det er en virtuell enhet som har en spesiell egenskap: Alle data skrevet til /dev/null forsvinner eller forsvinner. På grunn av denne egenskapen kalles den også bitbucket eller blackhole. La oss se en demonstrasjon.
Omdiriger utdata til /dev/null
I denne demoen kan du se at vi har lagt til noen data, men at dataene ikke ble lagret. Denne spesielle egenskapen til /dev/null har noen brukstilfeller. La oss se dem.
Bruk av /dev/null
Siden den forkaster alt som er skrevet til den, kan du flytte filer til /dev/null for å slette dem. Men dette er ikke et mye brukt case. Den brukes hovedsakelig til å forkaste standardutdata og standardfeil fra en utgang.
Hva er standard utgang og standardfeil?
Utdataene til en Linux-kommando inneholder to datastrømmer: standardutdata (stdout) og standardfeil (stderr0), mens standardutdata er normalutdata hvis kommandoen ikke har noen feil, er standardfeilen feilen generert av kommandoen. Utgang kan inneholde både standardutgang og standardinngang. Eksempel på stdout og stderr:
La oss kjøre følgende shell-skript
liste på java
# /bin/sh ls apt update>
Den første kommandoen kjørte, men den andre genererte feil. Siden stdout og stderr er to separate datastrømmer, kan de håndteres separat.
Hvordan få tilgang til stderr og stdout?
Stdout og stderr er datastrømmer, som begge behandles som en fil i Linux. Hvis du ønsker å utføre en handling på disse, bruker du en filbeskrivelse som unikt identifiserer filstrømmen. Filbeskrivelsen for stdout er 1 og for stderr er 2.
For å få tilgang til dem separat, la oss se følgende kommando som utføres på den samme skriptfilen som ble brukt i forrige eksempel.
./script.sh 1>stdout.txt>
I denne kan du se at utgangen inneholder standardfeil, men standardutgangen ble ikke vist. Dette er fordi stdout-strømmen ble sendt til stdout.txt-filen, og du kan se at stdout.txt-filen inneholder standardutdata.
Mens vi skriver et shell-skript, vil vi kanskje forkaste standardfeilen fra utdataene. Uansett hvilken strøm vi måtte ønske å undertrykke fra utdataene, kan den datastrømmen skrives inn i /dev/null. Du kan skrive disse dataene inn i en annen fil, akkurat som eksemplet ovenfor, men hvis du ikke har bruk for disse dataene, hvorfor vil du kaste bort minne på dem, det er bedre å forkaste det helt. La oss se følgende eksempel
./script.sh 2>/dev/null>
Og akkurat som det har vi fjernet stderr fra utgangen. Hvis du ønsker å forkaste hele utdata, kan du bruke følgende kommando
command>/dev/null 2>&1>
Kommandoen &> omdirigerer utdata fra filbeskrivelsen som er nevnt til venstre (i kommandoen ovenfor, utdata fra 2) til strømmen av filbeskrivelse nevnt på høyre side. Så utdata fra stderr (2) blir omdirigert til stdout(1), som igjen blir skrevet i /dev/null og dermed blir ødelagt.

Sikker filsletting
'/dev/null' finner verktøyet i sikker filsletting. Ved å omdirigere '/dev/null' til en fil, kan du effektivt overskrive innholdet med null-byte, noe som gjør det utfordrende å gjenopprette meningsfulle data.
For eksempel:
cat /dev/null>sensitiv_fil>
Denne kommandoen erstatter innholdet i 'sensitive_file' med null-byte, noe som sikrer sikker sletting.
Rensing av loggfiler
Loggfiler kan akkumulere betydelige data over tid. For å slette loggfiler uten å avbryte kjørende tjenester, kan du omdirigere innholdet deres til '/dev/null.'
For eksempel:
cat /dev/null>/var/log/syslog>
Denne kommandoen tømmer 'syslog'-filen ved å omdirigere innholdet til '/dev/null', og renser effektivt loggen uten å slette selve filen.
Tips og triks:
- Omdirigerer standard utdata til '/dev/null': 'command> /dev/null'
- Omdirigerer standardfeil til '/dev/null': 'kommando 2> /dev/null'
- Omdirigerer både utdata og feil til '/dev/null': 'command>/dev/null 2>&1'
Konklusjon
I denne artikkelen diskuterte vi at `/dev/null' i Linux er et virtuelt svart hull der data forsvinner når de skrives til det. Det brukes ofte til å forkaste utdata og feil, noe som gjør kommandoutførelsen renere. Den kan også brukes for sikker filsletting og loggfilrensing. Å forstå funksjonaliteten tillater effektive kommandolinjeoperasjoner i Linux.