Digamos que un archivo llamado abcexiste en el directorio actual y tiene texto. Cuando ejecutas el comando:
cat abc > abc
¿Por qué abcdesaparece el contenido del archivo ?
¿Por qué el comando elimina el texto que contiene y el archivo se convierte en un archivo vacío?
files
io-redirection
cat
Tulsi Kanodia
fuente
fuente

cutcambiar un archivo en su lugar?cat abc | dog abctee.Respuestas:
Por el orden en que se hacen las cosas.
Cuando tu lo hagas:
>es el operador de redireccionamiento de salida, cuando el shell ve esto, abre el archivo en modo de truncamiento usando laO_TRUNCmarca conopen(2)ieopen("abc", O_TRUNC), por lo que todo lo que había en el archivo desaparecerá. Tenga en cuenta que esta redirección se realiza primero por el shell antes de que secatejecute el comando.Entonces, cuando se
cat abcejecuta el comando , el archivoabcya está truncado, porcatlo tanto , encontrará el archivo vacío.fuente
cat: filename: input file is output file(dondefilenameestá el nombre de archivo que eligió) se imprime en el stdout antiguo.Agregando a la respuesta de @ heemayl , si desea que el código sea más claro acerca de la secuencia en la que están sucediendo las cosas, simplemente puede colocar las redirecciones al comienzo del comando:
fuente