it-swarm-eu.dev

Jak vyprázdnit ("zkrátit") soubor na linuxu, který již existuje a je nějak chráněn?

Mám na svém serveru soubor s názvem error.log, který musím často zkrátit. Mám oprávnění k souboru pro rw. Otevření souboru v> smazání veškerého obsahu> uložení (samozřejmě). Ale když to zkusím níže 

cat /dev/null > error.log

Dostal jsem zprávu

File already exists.

Je zřejmé, že na serveru je nějaká konfigurace, která zabraňuje náhodnému přepsání souborů. Může někdo říct, jak mám "zkrátit" soubor jedním příkazem?

107
Sumeet Pareek

Máte nastavenou možnost noclobber. Chyba vypadá jako z csh, takže byste udělali:

cat /dev/null >! file

Pokud se mýlím a používáte bash, měli byste:

cat /dev/null >| file

v bash můžete také zkrátit na:

>| file
154

Můžete také použít funkci zkrátit

$truncate -s0 yourfile

pokud je povolení odepřeno, použijte Sudo

$Sudo truncate -s0 yourfile

Nápověda/Manuál: man truncate

testováno na ubuntu Linuxu

70
risnandar

To bude stačit k nastavení velikosti souboru na 0:

> error.log
48
SIFE

zásluhu na tom má můj starší kolega:

:> filename

To nezlomí soubory protokolu, takže je můžete použít i na syslogu.

7
petermolnar

false | tee fileToTruncate

může fungovat

4
Dodger Web

Vzhledem k tomu, že Sudo nebude pracovat s přesměrováním>, líbí se mi pro tento účel příkaz tee 

echo "" | Sudo tee fileName
2
sakhunzai

Každý z nich může vyzkoušet tento příkaz pro zkrácení libovolného souboru v linuxovém systému

Toto bude jistě fungovat v libovolném formátu:

truncate -s 0 file.txt
0
user3301460