logo

Vad är /Dev/Null i Linux?

Om du har lärt dig skalprogrammering kanske du redan har stött på något som /dev/null. I den här artikeln kommer vi att förstå vad det är och hur det används. Låt oss börja med att förstå vad /dev är.

Vad är /dev?

I Linux-filsystemet är allt en fil eller en katalog. Även enheter nås som filer. Dina hårddiskpartitioner, Pen-enhet, högtalare, för alla dessa finns det en fil från vilken dessa nås. För att nu förstå hur enheter nås som filer, tänk på det på detta sätt: vad gör vi med en fil? Vi läser data från den och skriver data till den. En enhet som en högtalare kan mata in data för att producera ljud, en hårddisk kan användas för att läsa och skriva data, en skrivare tar indata för att skriva ut filer, etc. Filer och enheter liknar varandra på detta sätt



/dev är en katalog som lagrar alla fysiska och virtuella enheter i ett Linux-system. Fysiska enheter är lätta att förstå, de är påtagliga enheter som penn-enhet, högtalare, skrivare, etc. Ett Linux-system har också virtuella enheter som fungerar som en enhet men som inte representerar någon fysisk enhet.

Vad är /dev/null?

Det är en virtuell enhet som har en speciell egenskap: All data som skrivs till /dev/null försvinner eller försvinner. På grund av denna egenskap kallas det också bitbucket eller blackhole. Låt oss se en demonstration.

nätverksoperativsystem

Omdirigera utdata till /dev/null

I den här demon kan du se att vi har lagt till en del data, men att data inte lagrades. Denna speciella egenskap hos /dev/null har några användningsfall. Låt oss se dem.



Användning av /dev/null

Eftersom det kasserar allt som skrivits till det, kan du flytta filer till /dev/null för att radera dem. Men detta är inte ett allmänt använt användningsfall. Det används huvudsakligen för att ignorera standardutdata och standardfel från en utdata.

Vad är standardutdata och standardfel?

Utdata från ett Linux-kommando innehåller två dataströmmar: standardutdata (stdout) och standardfel (stderr0), medan standardutdata är den normala utdata om kommandot inte har några fel, är standardfelet det fel som genereras av kommandot. Utgången kan innehålla både standardutgång och standardingång. Exempel på stdout och stderr:

Låt oss köra följande skalskript



# /bin/sh ls apt update>

Det första kommandot kördes framgångsrikt, men det andra genererade ett fel. Eftersom stdout och stderr är två separata dataströmmar kan de hanteras separat.

Hur får man åtkomst till stderr och stdout?

Stdout och stderr är dataströmmar, som båda behandlas som en fil i Linux. Om du vill utföra någon åtgärd på dessa använder du en filbeskrivning som unikt identifierar filströmmen. Filbeskrivningen för stdout är 1 och för stderr är 2.

För att komma åt dem separat, låt oss se följande kommando som utförs på samma skriptfil som användes i föregående exempel.

./script.sh 1>stdout.txt>

I denna kan du se att utgången innehåller standardfel men att standardutgången inte visades. Detta beror på att stdout-strömmen skickades till filen stdout.txt och du kan se att filen stdout.txt innehåller standardutdata.

När vi skriver ett skalskript kanske vi vill kassera standardfelet från utdata. Vilken ström vi än vill undertrycka från utgången, kan den strömmen av data skrivas in i /dev/null. Du kan skriva in den informationen i en annan fil, precis som exemplet ovan, men om du inte har någon användning för den datan, varför skulle du vilja slösa minne på den, det är bättre att kassera den helt. Låt oss se följande exempel

./script.sh 2>/dev/null>

Och precis så har vi tagit bort stderr från utgången. Om du vill kassera hela utdata kan du använda följande kommando

sträng json java
command>/dev/null 2>&1>

Kommandot &> omdirigerar utdata från filbeskrivningen som nämns till vänster (i kommandot ovan, utdata från 2) till strömmen av filbeskrivning som nämns på höger sida. Så utdata från stderr (2) omdirigeras till stdout(1), som i sin tur skrivs i /dev/null och därmed förstörs.

Säker radering av filer

'/dev/null' hittar verktyget i säker filradering. Genom att omdirigera '/dev/null' till en fil kan du effektivt skriva över dess innehåll med nollbytes, vilket gör det svårt att återställa meningsfull data.

Till exempel:

cat /dev/null>sensitive_file>

Det här kommandot ersätter innehållet i 'sensitive_file' med nollbytes, vilket säkerställer att det tas bort på ett säkert sätt.

Rengöring av loggfiler

Loggfiler kan ackumulera betydande data över tiden. För att rensa loggfiler utan att avbryta pågående tjänster kan du omdirigera deras innehåll till '/dev/null.'

konvertera sträng int java

Till exempel:

cat /dev/null>/var/log/syslog>

Detta kommando tömmer 'syslog'-filen genom att omdirigera dess innehåll till '/dev/null', och rensar effektivt loggen utan att ta bort själva filen.

Tips och tricks:

  • Omdirigerar standardutdata till '/dev/null': 'command> /dev/null'
  • Omdirigerar standardfel till '/dev/null': 'kommando 2> /dev/null'
  • Omdirigerar både utdata och fel till '/dev/null': 'command>/dev/null 2>&1'

Slutsats

I den här artikeln diskuterade vi att `/dev/null' i Linux är ett virtuellt svart hål där data försvinner när den skrivs till den. Det används vanligtvis för att kassera utdata och fel, vilket gör kommandokörningen renare. Det kan också användas för säker radering av filer och rengöring av loggfiler. Att förstå dess funktionalitet möjliggör effektiv kommandoradsoperation i Linux.