Při práci se soubory v terminálu Linuxu můžete občas chtít vymazat obsah souboru, aniž byste jej museli nutně otevírat pomocí některého z editorů příkazového řádku Linuxu. Jak toho lze dosáhnout? V tomto článku si projdeme několik různých způsobů vyprázdnění obsahu souboru pomocí několika užitečných příkazů.
Upozornění: Než se pustíme do prohlížení různých způsobů, upozorňujeme, že vzhledem k tomu, že v Linuxu je všechno soubor, musíte se vždy ujistit, že soubor(y), který(é) vyprazdňujete, nejsou důležité uživatelské nebo systémové soubory. Vymazání obsahu důležitého systémového nebo konfiguračního souboru by mohlo vést k fatální chybě nebo selhání aplikace/systému.
Níže jsou uvedeny způsoby vymazání obsahu souborů z příkazového řádku.
Důležité: Pro účely tohoto článku jsme v následujících příkladech použili soubor access.log
.
Vymazání obsahu souboru přesměrováním na Null
Nejjednodušší způsob, jak vyprázdnit nebo vymazat obsah souboru pomocí shellového přesměrování null
(neexistující objekt) na soubor, jak je uvedeno níže:
# > access.log

Vyprázdnění souboru pomocí přesměrování příkazem ‚true‘
Zde použijeme symbol :
je vestavěný příkaz shellu, který je svou podstatou ekvivalentní příkazu true
a lze jej použít jako no-op (žádná operace).
Jiný způsob je přesměrovat výstup :
nebo true
vestavěného příkazu do souboru takto:
# : > access.logOR # true > access.log

Prázdný soubor pomocí nástrojů cat/cp/dd s /dev/null
Zařízení null
se v Linuxu v podstatě využívá pro zahazování nežádoucích výstupních toků procesu, případně jako vhodný prázdný soubor pro vstupní toky. To se obvykle provádí mechanismem přesměrování.
A soubor zařízení /dev/null
je tedy speciální soubor, který odepisuje (odstraňuje) jakýkoli vstup, který je do něj odeslán, nebo je jeho výstup stejný jako u prázdného souboru.
Dále můžete obsah souboru vyprázdnit tak, že do něj (souboru) přesměrujete výstup /dev/null
jako vstup pomocí příkazu cat:
# cat /dev/null > access.log

Dále použijeme příkaz cp k vyprázdnění obsahu souboru podle obrázku.
# cp /dev/null access.log

V následujícím příkazu if
znamená vstupní soubor a of
odkazuje na výstupní soubor.
# dd if=/dev/null of=access.log

Prázdný soubor pomocí příkazu echo
Zde můžete použít příkaz echo s prázdným řetězcem a přesměrovat jej do souboru následujícím způsobem:
# echo "" > access.logOR# echo > access.log

Poznámka: Měli byste mít na paměti, že prázdný řetězec není totéž co nula. Řetězec je již objektem stejně jako může být prázdný, zatímco null jednoduše znamená neexistenci objektu.
Z tohoto důvodu, když přesměrujete výstup z výše uvedeného příkazu echo do souboru a zobrazíte obsah souboru pomocí příkazu cat, je vypsán prázdný řádek (prázdný řetězec).
Chcete-li do souboru poslat nulový výstup, použijte příznak -n
, který říká příkazu echo, aby nevypisoval koncový nový řádek, který vede do prázdného řádku vytvořeného v předchozím příkazu.
# echo -n "" > access.log

Prázdný soubor pomocí příkazu truncate
Příkaz truncate pomáhá zmenšit nebo zvětšit velikost souboru na definovanou velikost.
Můžete jej použít s volbou -s
, která určuje velikost souboru. Chcete-li obsah souboru vyprázdnit, použijte velikost 0 (nula) jako v následujícím příkazu:
# truncate -s 0 access.log

To je prozatím vše, v tomto článku jsme se zabývali několika způsoby vymazání nebo vyprázdnění obsahu souboru pomocí jednoduchých nástrojů příkazového řádku a mechanismu přesměrování shellu.
Tyto nejsou pravděpodobně jediné dostupné praktické způsoby, jak to provést, takže nám můžete prostřednictvím níže uvedené části pro zpětnou vazbu sdělit i další metody, které v tomto návodu nebyly zmíněny.