Android

Hur man trunkerar (tomma) filer i Linux

1. Öppna och importera filer

1. Öppna och importera filer

Innehållsförteckning:

Anonim

I vissa situationer kanske du vill trunka (tömma) en befintlig fil till noll längd. I enkla ord betyder att avkorta en fil ta bort filinnehållet utan att radera filen.

Att avkorta en fil är mycket snabbare och enklare än att ta bort filen, återskapa den och ställa in rätt behörigheter och äganderätt. Om filen öppnas genom en process kan det ta fel att programmet som använder den inte fungerar genom att ta bort filen.

Den här tutorialen förklarar hur man kan avkorta filer till nollstorlek i Linux-system med hjälp av shell omdirigering och truncate .

Shell Redirection

Den enklaste och mest använda metoden för att trunkera filer är att använda operatören > shell omdirigering.

Det allmänna formatet för att trunkera filer med omdirigering är:

: > filename

Låt oss bryta ner kommandot:

  • Kolon : betyder true och producerar ingen utgång. Omdirigeringsoperatören > omdirigerar utgången från föregående kommando till den givna filen. filename , den fil du vill trunkera.

Om filen finns kommer den att trunkeras till noll. Annars skapas filen.

I stället för : kan också använda ett annat kommando som inte producerar någon utgång.

Här är ett exempel på att använda cat att mata ut innehållet i /dev/null enheten, vilket bara returnerar ett slut-på-filtecken:

cat /dev/null > filename

Ett annat kommando som kan användas är echo . Alternativet -n säger echo inte lägga till en ny linje:

echo -n > filename

På de flesta moderna skal som Bash eller Zsh kan du utelämna kommandot före omdirigeringssymbolen och använda:

> filename

För att kunna avka en fil måste du ha skrivbehörigheter för filen. Vanligtvis skulle du använda sudo för detta, men de förhöjda rotbehörigheterna gäller inte vidarekopplingen. Här är ett exempel:

sudo: > /var/log/syslog

bash: /var/log/syslog: Permission denied

Det finns flera lösningar som tillåter omdirigering med sudo . Det första alternativet kan köra ett nytt skal med sudo och köra ett kommando inuti det skalet med flaggan -c :

sudo sh -c '> filename'

Ett annat alternativ är att leda utdata till tee kommandot, höja tee privilegierna med sudo och skriva den tomma utgången till en given fil:

: | sudo tee filename

truncate kommandot

truncate är ett kommandoradsverktyg som låter dig krympa eller utöka storleken på en fil till en viss storlek.

Den allmänna syntaxen för trunkering av filer till nollstorlek med trunkeringskommandot är följande:

truncate -s 0 filename

Alternativet -s 0 sätter filstorleken till noll.

Till exempel för att tömma Nginx-åtkomstloggen skulle du använda:

sudo truncate -s 0 /var/log/nginx/access.log

Töm alla loggfiler

Med tiden kan din hårddisk bli rörig med många stora loggfiler som tar stora mängder diskutrymme.

Följande kommando tömmer filer som slutar med “.log” under katalogen /var/log :

sudo truncate -s 0 /var/log/**/*.log

Ett bättre alternativ skulle vara att rotera, komprimera och ta bort loggfilerna med logrotate verktyget.

Slutsats

För att avkorta en fil i Linux använder du omdirigeringsoperatören > följt av filnamnet.

avkortade terminal