it-swarm.com.de

Wie kann man eine unter Linux vorhandene und in irgendeiner Weise geschützte Datei leeren ("abschneiden")?

Ich habe eine Datei namens error.log auf meinem Server, die ich häufig abschneiden muss. Ich habe Rechte für die Datei. Öffnen der Datei in vi> Löschen des gesamten Inhalts> Speichern von Werken (natürlich). Aber wenn ich das unten probiere 

cat /dev/null > error.log

Ich bekomme die Nachricht

File already exists.

Natürlich wird auf dem Server eine Konfiguration vorgenommen, um ein versehentliches Überschreiben von Dateien zu verhindern. Kann jemand sagen, wie ich die Datei in einem einzigen Befehl "abschneide"?

107
Sumeet Pareek

Sie haben die Option noclobber gesetzt. Der Fehler sieht so aus, als wäre er von csh.

cat /dev/null >! file

Wenn ich falsch liege und Sie bash verwenden, sollten Sie Folgendes tun:

cat /dev/null >| file

in bash kannst du das auch verkürzen auf:

>| file
154

Sie können auch die Funktion truncate verwenden.

$truncate -s0 yourfile

wenn die Erlaubnis verweigert wird, verwenden Sie Sudo

$Sudo truncate -s0 yourfile

Hilfe/Handbuch: man schneidet ab

getestet auf Ubuntu Linux

70
risnandar

Dies reicht aus, um die Dateigröße auf 0 zu setzen:

> error.log
48
SIFE

meinem Kollegen gilt dies als Verdienst:

:> filename

Dadurch werden die Protokolldateien nicht beschädigt, sodass Sie sie beispielsweise auch für Syslog verwenden können.

7
petermolnar

false | tee fileToTruncate

kann auch funktionieren

4
Dodger Web

Da Sudo nicht mit redirection> arbeiten kann, mag ich den Befehl tee für diesen Zweck 

echo "" | Sudo tee fileName
2
sakhunzai

Jeder kann mit diesem Befehl versuchen, eine beliebige Datei in linux system abzuschneiden

Dies wird sicherlich in jedem Format funktionieren:

truncate -s 0 file.txt
0
user3301460