Android

Jak zkrátit (prázdné) soubory v Linuxu

Уловки сознания

Уловки сознания

Obsah:

Anonim

V některých situacích můžete chtít zkrátit (prázdný) existující soubor na nulovou délku. Zjednodušeně řečeno, zkrácení souboru znamená odstranění obsahu souboru bez odstranění souboru.

Zkrácení souboru je mnohem rychlejší a snadnější než jeho odstranění, opětovné vytvoření a nastavení správných oprávnění a vlastnictví. Také pokud je soubor otevřen procesem, může odebrání souboru způsobit selhání programu, který jej používá.

Tento tutoriál vysvětluje, jak zkrátit soubory na nulovou velikost v systémech Linux pomocí přesměrování prostředí a příkazu truncate .

Přesměrování Shell

Nejjednodušší a nejpoužívanější metodou pro zkrácení souborů je použití operátoru přesměrování > shellu.

Obecný formát pro zkrácení souborů pomocí přesměrování je:

: > filename

Pojďme rozebrat příkaz:

  • : Dvojtečka znamená true a nevytváří žádný výstup. Operátor přesměrování > přesměruje výstup předchozího příkazu na daný soubor. filename , soubor, který chcete zkrátit.

Pokud soubor existuje, bude zkrácen na nulu. Jinak bude soubor vytvořen.

Místo : může také použít jiný příkaz, který nevytváří žádný výstup.

Zde je příklad použití příkazu cat k výstupu obsahu zařízení /dev/null , které vrací pouze znak konce souboru:

cat /dev/null > filename

Dalším příkazem, který lze použít, je echo . Možnost -n říká echo , aby nepřipojil nový řádek:

echo -n > filename

Na většině moderních skořápek, jako jsou Bash nebo Zsh, můžete příkaz před symbolem přesměrování vynechat a použít:

> filename

Abyste mohli soubor zkrátit, musíte mít do souboru oprávnění pro zápis. Obvykle byste na to použili sudo , ale zvýšená oprávnění root se na přesměrování nevztahují. Zde je příklad:

sudo: > /var/log/syslog

bash: /var/log/syslog: Permission denied

Existuje několik řešení, která umožňují přesměrování pomocí sudo . První možnost může spustit nový shell pomocí sudo a provést příkaz uvnitř tohoto shellu pomocí příznaku -c :

sudo sh -c '> filename'

Další možností je přenést výstup na příkaz tee , zvýšit oprávnění pro tee pomocí sudo a zapsat prázdný výstup do daného souboru:

: | sudo tee filename

truncate příkaz

truncate je nástroj příkazového řádku, který umožňuje zmenšit nebo rozšířit velikost souboru na danou velikost.

Obecná syntaxe pro zkrácení souborů na nulovou velikost pomocí příkazu truncate je následující:

truncate -s 0 filename

Možnost -s 0 nastaví velikost souboru na nulu.

Například pro vyprázdnění přístupového protokolu Nginx byste použili:

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

Vyprázdněte všechny soubory protokolu

V průběhu času se může vaše disková jednotka zaplnit mnoha velkými soubory protokolu, které zabírají velké množství místa na disku.

Následující příkaz vyprázdní soubory končící na „.log“ v adresáři /var/log :

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

Lepší možností by bylo otáčet, komprimovat a odstraňovat soubory protokolů pomocí nástroje logrotate .

Závěr

Chcete-li zkrátit soubor v systému Linux, použijte operátor přesměrování > následovaný názvem souboru.

zkrátit terminál