Mir sind drei Methoden bekannt, um alle Einträge aus einer Datei zu löschen.
Sie sind
>filenametouch filenamefilename < /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.