Mir sind drei Methoden bekannt, um alle Einträge aus einer Datei zu löschen.
Sie sind
>filename
touch filename
filename < /dev/null
Von diesen dreien missbrauche ich >filename
die meisten, da dies die geringste Anzahl von Tastenanschlägen erfordert.
Ich würde jedoch gerne wissen, welche der drei die effizienteste ist (falls es effizientere Methoden gibt) in Bezug auf große Protokolldateien und kleine Dateien.
Wie funktionieren die drei Codes und wie löschen Sie den Inhalt?
Bearbeiten :Wie in dieser Antwort besprochen, ist dies eigentlich nicht der Fall Löschen Sie die Datei!
Akzeptierte Antwort:
Eigentlich ist die zweite Form touch filename
löscht nichts aus der Datei – es erstellt nur eine leere Datei, wenn keine existiert, oder aktualisiert das Datum der letzten Änderung einer vorhandenen Datei.
Und der dritte filename < /dev/null
versucht filename mit /dev/null
auszuführen als Eingabe.
cp /dev/null filename
funktioniert.
Am effizientesten wäre truncate -s 0 filename
(siehe hier).
Andernfalls cp /dev/null filename
oder > filename
sind beide in Ordnung. Beide öffnen und schließen die Datei mit der Einstellung „truncate-on-open“. cp
öffnet auch /dev/null
, wodurch es geringfügig langsamer wird.
Andererseits truncate
wäre wahrscheinlich langsamer als > filename
wenn es von einem Skript ausgeführt wird, da die Ausführung des Befehls truncate erfordert, dass das System die ausführbare Datei öffnet, lädt und dann ausführt.