Conozco tres métodos para eliminar todas las entradas de un archivo.
ellos son
>filenametouch filenamefilename < /dev/null
De estos tres abuso de >filename la mayor cantidad ya que requiere la menor cantidad de pulsaciones de teclas.
Sin embargo, me gustaría saber cuál es el más eficiente de los tres (si hay métodos más eficientes) con respecto a los archivos de registro grandes y los archivos pequeños.
Además, ¿cómo funcionan los tres códigos y eliminan los contenidos?
Editar :como se discutió en esta respuesta, esto en realidad no borrar el archivo!
Respuesta aceptada:
En realidad, la segunda forma touch filename no elimina nada del archivo; solo crea un archivo vacío si no existe uno, o actualiza la fecha de última modificación de un archivo existente.
Y el tercer filename < /dev/null intenta ejecutar el nombre de archivo con /dev/null como entrada.
cp /dev/null filename funciona.
En cuanto a eficiente, el más eficiente sería truncate -s 0 filename (ver aquí).
De lo contrario, cp /dev/null filename o > filename ambos están bien. Ambos abren y luego cierran el archivo, utilizando la configuración truncar al abrir. cp también abre /dev/null , por lo que lo hace un poco más lento.
Por otro lado, truncate probablemente sería más lento que > filename cuando se ejecuta desde un script, ya que ejecutar el comando truncar requiere que el sistema abra el ejecutable, lo cargue y luego lo ejecute.