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"?
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
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
Dies reicht aus, um die Dateigröße auf 0 zu setzen:
> error.log
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.
false | tee fileToTruncate
kann auch funktionieren
Da Sudo nicht mit redirection>
arbeiten kann, mag ich den Befehl tee
für diesen Zweck
echo "" | Sudo tee fileName
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