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?
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
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
To bude stačit k nastavení velikosti souboru na 0:
> error.log
zásluhu na tom má můj starší kolega:
:> filename
To nezlomí soubory protokolu, takže je můžete použít i na syslogu.
false | tee fileToTruncate
může fungovat
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
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