¿Podría alguien explicarme la diferencia entre >y >>cuando se utilizan comandos de shell?
Ejemplo:
ps -aux > log
ps -aux >> log
Parece que el resultado es el mismo en ambos sentidos.
command-line
whale_steward
fuente
fuente

Respuestas:
>se utiliza para sobrescribir (" clobber ") un archivo y>>se utiliza para agregar a un archivo.Por lo tanto, cuando lo use
ps aux > file, la salida deps auxse escribirá enfiley si un archivo llamadofileya estaba presente, su contenido se sobrescribirá.Y si lo usa
ps aux >> file, la salida deps auxse escribirá enfiley si el archivo nombradofileya estaba presente, el archivo ahora contendrá sus contenidos anteriores y también el contenido deps aux, escrito después de su contenido anterior defile.fuente
si escribes en la terminal
Pondrá la salida de
ps auxregistrar el archivo con nombre.entonces si pones
entonces la próxima salida se agregará debajo de la primera. si coloca solo uno
>, sobrescribirá el archivo anterior.fuente
Sí,
>>agrega,>siempre sobrescribe / destruye el contenido anterior.es lo mismo que
En Wintel es lo mismo
.bat,.cmdy los.ps1scripts también; herencia común, sentido común.fuente
La diferencia más importante es que
>hace que Shell abra un archivo o un objeto similar a un archivo conO_WRONLY|O_CREAT|O_TRUNCbanderas: el archivo se creará o truncará si existe, mientras que>>abrirá un archivo conO_WRONLY|O_CREAT|O_APPENDbanderas: el archivo se creará o se agregará si existe. Esto es evidente si rastrea llamadas del sistema, por ejemplo conY con
Observe que en ambos casos el descriptor de archivo del archivo abierto está duplicado en el descriptor de archivo 1 (stdout) del comando, y eso será heredado por cualquier comando que forme el shell.
fuente