GNU/Linux >> Tutoriales Linux >  >> Linux

¿Diferencia entre Cat y '>' para poner a cero un archivo?

¿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

Linux
  1. ¿La diferencia entre "du -sh *" y "du -sh ./*"?

  2. ¿Diferencia entre Eot y Eof?

  3. ¿Diferencia entre [0-9], [[:digit:]] y D?

  4. ¿La diferencia entre .exrc y .vimrc?

  5. ¿Diferencia entre un sistema de archivos distribuido y uno de clúster?

Diferencia entre SAN y NAS

La diferencia entre más, menos y la mayoría de los comandos

¿Cuál es la diferencia entre el comando Cat y Touch?

Explicación de la diferencia entre apt y apt-get

diferencia entre cgroups y espacios de nombres

Diferencia entre archivo de dispositivo y controladores de dispositivo