Ett sådant exempel är / dev / null. Det är en speciell fil som finns i varje enskilt Linux-system. Till skillnad från de flesta andra virtuella filer används det istället för att läsa det för att skriva. Vad du än skriver till / dev / null kommer att kasseras, glömmas bort i tomrummet. Det är känt som null-enheten i ett UNIX-system.
Varför skulle du vilja kasta något i tomrummet? Låt oss kolla vad / dev / null är och dess användning.
Förutsättningar
Innan vi dyker djupt in i användningen av / dev / null måste vi ha ett tydligt grepp om stdout och stderr dataström. Kolla in den här fördjupade guiden stdin, stderr, och stdout.
Låt oss ta en snabb uppdatering. Närhelst något kommandoradsverktyg körs genererar det två utgångar. Produktionen går till stdout och felet (om det genereras) går till stderr. Som standard är båda dessa dataströmmar associerade med terminalen.
Till exempel kommer följande kommando att skriva ut strängen inom det dubbla citattecknet. Här lagras utgången i stdout.
$ echo “Hello World”
Nästa kommando visar oss utgångsstatus för det tidigare körda kommandot.
$ echo $?
Eftersom det tidigare kommandot kördes framgångsrikt är utgångsstatus 0. I annat fall kommer utgångsstatusen att vara annorlunda. Vad händer när du försöker köra ett ogiltigt kommando?
$ adfadsf$ echo $?
Nu måste vi veta om filbeskrivaren. I UNIX-ekosystemet är detta heltal som tilldelats en fil. Både stdout (filbeskrivare = 1) och stderr (filbeskrivare = 2) har en specifik filbeskrivare. Med hjälp av filbeskrivaren (1 och 2 i denna situation) kan vi omdirigera stdout och stderr till andra filer.
För starter, kommer följande exempel att omdirigera stdout av ekokommandot till en textfil. Här specificerade vi inte filbeskrivaren. Om det inte anges kommer bash att använda stdout som standard.
$ echo “Hello World”> logg.Text
Följande kommando omdirigerar stderr till en textfil.
$ asdfadsa 2> fel.Text
Använda / dev / null
Omdirigerar utdata till / dev / null
Nu är vi redo att lära oss hur man använder / dev / null. Låt oss först kolla hur man filtrerar normal utmatning och fel. I följande kommando försöker grep söka efter en sträng (hej, i det här fallet) i katalogen “/ sys”.
$ grep -r hej / sys /
Det kommer dock att generera mycket fel eftersom grep inte har tillgång till ett antal filer utan root-behörighet. I ett sådant fall kommer det att resultera i ”Tillstånd nekad” -fel. Nu, med hjälp av omdirigeringen, kan vi få en tydligare produktion.
$ grep -r hej / sys / 2> / dev / null
Produktionen ser mycket bättre ut, eller hur? Ingenting! I det här fallet har grep inte tillgång till många filer och de som är tillgängliga har inte strängen "hej".
I följande exempel pingar vi Google.
$ ping google.com
Vi vill dock inte se alla de framgångsrika pingresultaten. Istället vill vi bara fokusera på felen när ping inte kunde nå Google. Hur gör vi det?
$ ping google.com 1> / dev / null
Här, innehållet i stdout dumpas till / dev / null, så att endast felen lämnas.
Omdirigera all utdata till / dev / null
I vissa situationer kanske utdata inte är användbar alls. Med omdirigering kan vi dumpa all utdata i tomrummet.
$ grep -r hej / sys /> / dev / null 2> & 1
Låt oss bryta detta kommando lite. Först dumpar vi allt stdout till / dev / null. Sedan, i den andra delen, ber vi bash att skicka stderr till stdout. I det här exemplet finns det inget att mata ut. Men om du är förvirrad kan du alltid kontrollera om kommandot kördes framgångsrikt.
$ echo $?
Värdet är 2 eftersom kommandot genererade många fel.
Om du brukar glömma filbeskrivaren för stdout och stderr, följande kommando kommer att fungera bra. Det är ett mer generaliserat format av föregående kommando. Både stdout och stderr kommer att omdirigeras till / dev / null.
$ grep -r hej / sys / &> / dev / null
Andra exempel
Det här är intressant. Kom ihåg dd-verktyget? Det är ett kraftfullt verktyg för att konvertera och kopiera filer. Läs mer om dd. Med hjälp av dd kan vi testa sekvensens läshastighet för din disk. Naturligtvis är det inte en korrekt mätning. Men för ett snabbtest är det ganska användbart.
$ dd if =
Här har jag använt Ubuntu 18.04.4 ISO som den stora filen.
På samma sätt kan du också testa nedladdningshastigheten för din internetanslutning.
$ wget -O / dev / null
Slutgiltiga tankar
Förhoppningsvis har du en klar förståelse för vad denna / dev / null-fil är. Det är en speciell enhet som, om den skrivs till den, kasseras och läses från den läser null. Den verkliga potentialen för denna intressanta funktion ligger i intressanta bash-skript.
Är du intresserad av bash scripting? Kolla in nybörjarguiden för bash scripting.
Njut av!