Quelqu'un pourrait-il m'expliquer la différence entre >
et >>
lors de l'utilisation de commandes shell?
Exemple:
ps -aux > log
ps -aux >> log
Il semble que le résultat est le même de toute façon.
command-line
whale_steward
la source
la source
Réponses:
>
est utilisé pour écraser (“ clobber ”) un fichier et>>
est ajouté à un fichier.Ainsi, lorsque vous utilisez
ps aux > file
, la sortie deps aux
sera écritefile
et si un fichier nomméfile
était déjà présent, son contenu sera écrasé.Et si vous utilisez
ps aux >> file
, la sortie deps aux
sera écritefile
et si le fichier nomméfile
était déjà présent, le fichier contiendra maintenant son contenu précédent, ainsi que le contenu deps aux
, écrit après son ancien contenu defile
.la source
si vous écrivez dans le terminal
Il mettra la sortie du
ps aux
journal nommé fichier.alors si vous mettez
alors la prochaine sortie sera ajoutée en dessous de la première. si vous n'en mettez qu'un seul
>
, le fichier précédent sera écrasé.la source
Oui,
>>
ajoute,>
écrase / détruit toujours le contenu précédent.est le même que
Sur Wintel est le même pour
.bat
,.cmd
et les.ps1
scripts aussi; patrimoine commun, bon sens.la source
La différence la plus importante est que
>
shell ouvre un fichier ou un objet semblable à un fichier avec desO_WRONLY|O_CREAT|O_TRUNC
indicateurs - le fichier sera créé ou tronqué s'il existe, alors qu'un fichier ouvert>>
avec desO_WRONLY|O_CREAT|O_APPEND
indicateurs - le fichier sera créé ou ajouté s'il existe. Cela est évident si vous tracez des appels système, par exemple avecEt avec
Notez que dans les deux cas, le descripteur de fichier du fichier ouvert est dupliqué sur le descripteur de fichier 1 (stdout) de la commande et sera hérité de la commande donnée par le forks du shell.
la source