Conozco tres métodos para eliminar todas las entradas de un archivo.
ellos son
>filename
touch filename
filename < /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.