Sono a conoscenza di tre metodi per eliminare tutte le voci da un file.
Loro sono
>filename
touch filename
filename < /dev/null
Di questi tre abuso di >filename
il massimo in quanto richiede il minor numero di sequenze di tasti.
Tuttavia, vorrei sapere qual è il più efficiente dei tre (se esistono metodi più efficienti) rispetto a file di registro di grandi dimensioni e file di piccole dimensioni.
Inoltre, come funzionano i tre codici ed eliminano i contenuti?
Modifica :come discusso in questa risposta, in realtà non cancella il file!
Risposta accettata:
In realtà, la seconda forma touch filename
non elimina nulla dal file:crea solo un file vuoto se non esisteva o aggiorna la data dell'ultima modifica di un file esistente.
E il terzo filename < /dev/null
tenta di eseguire filename con /dev/null
come input.
cp /dev/null filename
funziona.
Per quanto riguarda l'efficienza, la più efficiente sarebbe truncate -s 0 filename
(vedi qui).
Altrimenti, cp /dev/null filename
o > filename
stanno entrambi bene. Entrambi aprono e quindi chiudono il file, utilizzando l'impostazione tronca all'apertura. cp
apre anche /dev/null
, quindi questo lo rende leggermente più lento.
D'altra parte, truncate
sarebbe probabilmente più lento di > filename
quando viene eseguito da uno script poiché l'esecuzione del comando truncate richiede che il sistema apra l'eseguibile, lo carichi e quindi lo esegua.