Je connais trois méthodes pour supprimer toutes les entrées d'un fichier.
Ils sont
>filenametouch filenamefilename < /dev/null
De ces trois j'abuse de >filename le plus car cela nécessite le moins de frappes.
Cependant, j'aimerais savoir quelle est la plus efficace des trois (s'il existe des méthodes plus efficaces) en ce qui concerne les gros fichiers journaux et les petits fichiers.
De plus, comment fonctionnent les trois codes et suppriment le contenu ?
Modifier :comme indiqué dans cette réponse, cela ne le fait pas effacez le fichier !
Réponse acceptée :
En fait, la deuxième forme touch filename ne supprime rien du fichier - il crée uniquement un fichier vide s'il n'en existait pas, ou met à jour la date de dernière modification d'un fichier existant.
Et le troisième filename < /dev/null essaie d'exécuter filename avec /dev/null comme entrée.
cp /dev/null filename fonctionne.
Quant à efficace, le plus efficace serait truncate -s 0 filename (voir ici).
Sinon, cp /dev/null filename ou > filename sont bien tous les deux. Ils ouvrent et ferment tous les deux le fichier, en utilisant le paramètre tronquer à l'ouverture. cp ouvre également /dev/null , ce qui le rend légèrement plus lent.
Par contre, truncate serait probablement plus lent que > filename lorsqu'il est exécuté à partir d'un script, car l'exécution de la commande truncate nécessite que le système ouvre l'exécutable, le charge, puis l'exécute.