¿Son estos dos comandos diferentes en la forma en que se ponen a cero los archivos? ¿Es esto último una forma más corta de hacer lo primero? ¿Qué está pasando detrás de escena?
Ambos
$ cat /dev/null > file.txt
$ > file.txt
rendimiento
-rw-r--r-- 1 user wheel 0 May 18 10:33 file.txt
Respuesta aceptada:
cat /dev/null > file.txt
es un uso inútil de cat.
Básicamente cat /dev/null
simplemente da como resultado cat
dando salida a nada. Sí, funciona, pero muchos lo desaprueban porque da como resultado la invocación de un proceso externo que no es necesario.
Es una de esas cosas que son comunes simplemente porque son comunes.
Usando solo > file.txt
funcionará en la mayoría de las carcasas, pero no es completamente portátil. Si quieres que sea completamente portátil, las siguientes son buenas alternativas:
true > file.txt
: > file.txt
Ambos :
y true
no generan datos y son componentes internos de shell (mientras que cat
es una utilidad externa), por lo que son más ligeros y más "apropiados".
Actualización:
Como tylerl mencionó en su comentario, también está el >| file.txt
sintaxis.
La mayoría de los shells tienen una configuración que les impide truncar un archivo existente a través de >
. Debe usar >|
en cambio. Esto es para evitar errores humanos cuando realmente quería agregar con >>
. Puede activar el comportamiento con set -C
.
Entonces, con esto, creo que el método más simple, adecuado y portátil para truncar un archivo sería:
:>| file.txt