Ibland när du hanterar filer i Linux-terminalen kan du vilja rensa innehållet i en fil utan att nödvändigtvis öppna den med hjälp av någon Linux-kommandoradsredigerare. Hur kan man göra detta? I den här artikeln kommer vi att gå igenom flera olika sätt att tömma filinnehållet med hjälp av några användbara kommandon.
Varning: Innan vi går vidare till att titta på de olika sätten ska du notera att eftersom allt i Linux är en fil måste du alltid se till att den eller de filer du tömmer inte är viktiga användar- eller systemfiler. Att tömma innehållet i en viktig system- eller konfigurationsfil kan leda till ett ödesdigert program-/systemfel eller fel.
Med det sagt, nedan följer sätt att tömma filinnehåll från kommandoraden.
Viktigt: För den här artikeln har vi använt filen access.log
i följande exempel.
Tömma filinnehåll genom att omdirigera till noll
Ett enkelt sätt att tömma eller tömma ett filinnehåll med hjälp av shell redirect null
(icke-existerande objekt) till filen enligt nedan:
# > access.log
Tömma fil med hjälp av ’true’-kommandot omdirigering
Här kommer vi att använda symbolen :
som är ett inbyggt kommando i skalet och som i huvudsak är likvärdigt med true
-kommandot, och det kan användas som en no-op (ingen operation).
En annan metod är att omdirigera utdata från :
eller true
inbyggt kommando till filen på följande sätt:
# : > access.logOR # true > access.log
Tomma filer med hjälp av cat/cp/dd-verktygen med /dev/null
I Linux används null
-enheten i princip för att kassera oönskade utdata från en process, eller som en lämplig tom fil för inmatningsflöden. Detta görs normalt med hjälp av omdirigeringsmekanismen.
Och enhetsfilen /dev/null
är därför en speciell fil som skriver bort (tar bort) all inmatning som skickas till den, eller så är dess utdata densamma som för en tom fil.
Det går dessutom att tömma innehållet i en fil genom att omdirigera utdata från /dev/null
till den (filen) som indata med hjälp av kommandot cat:
# cat /dev/null > access.log
Nästan kommer vi att använda kommandot cp för att tömma innehållet i en fil enligt följande.
# cp /dev/null access.log
I följande kommando betyder if
ingångsfilen och of
hänvisar till utdatafilen.
# dd if=/dev/null of=access.log
Tomt filinnehåll med hjälp av echo-kommandot
Här kan du använda ett eko-kommando med en tom sträng och omdirigera den till filen enligt följande:
# echo "" > access.logOR# echo > access.log
Anmärkning: Du bör komma ihåg att en tom sträng inte är detsamma som null. En sträng är redan ett objekt, även om den kan vara tom, medan null helt enkelt betyder att ett objekt inte existerar.
Av denna anledning, när du omdirigerar utgången från kommandot echo ovan till filen och tittar på filens innehåll med hjälp av kommandot cat, skrivs en tom rad (tom sträng) ut.
För att skicka en noll-utgång till filen använder du flaggan -n
som talar om för echo att inte skriva ut den avslutande nya raden som leder till den tomma raden som producerades i det föregående kommandot.
# echo -n "" > access.log
Tömd fil med hjälp av truncate-kommandot
Truncate-kommandot hjälper till att krympa eller utöka storleken på en fil till en definierad storlek.
Du kan använda det med alternativet -s
som anger filstorleken. För att tömma innehållet i en fil använder du storleken 0 (noll) som i nästa kommando:
# truncate -s 0 access.log
Det var allt för tillfället, i den här artikeln har vi täckt flera metoder för att rensa eller tömma filinnehållet med hjälp av enkla kommandoradsverktyg och skalets omdirigeringsmekanism.
Dessa är förmodligen inte de enda tillgängliga praktiska sätten att göra detta, så du kan också berätta för oss om andra metoder som inte nämns i den här guiden via feedback-sektionen nedan.