351 votes

Ecrire dans le fichier, mais l'écraser s'il existe déjà

echo "text" >> 'Users/Name/Desktop/TheAccount.txt'

Comment faire pour qu'il crée le fichier s'il n'existe pas, mais l'écrase s'il existe déjà. Actuellement, ce script ne fait qu'ajouter.

4voto

greensaxman Points 41

Il est à noter que si vous souhaitez rediriger à la fois stderr et stdout vers un fichier alors que vous avez activé noclobber (i.e. set -o noclobber ), vous pouvez utiliser le code :

cmd >| file.txt 2>&1

Vous trouverez de plus amples informations à ce sujet à l'adresse suivante https://stackoverflow.com/a/876242 .

Cela répond également à la question de @TuBui sur la réponse fournie par @BrDaHa. au-dessus de à Aug 9 '18 à 9:34.

-2voto

Narendra Maru Points 199

Pour écraser le contenu d'un fichier dans un autre fichier, vous utilisez le signe plus grand que simple, en utilisant deux, vous ajouterez.

echo  "this is foo" > foobar.txt
cat foobar.txt
    > this is foo

echo "this is bar" > foobar.txt
cat foobar.txt
    > this is bar

echo "this is foo, again" >> foobar.txt
cat foobar.txt
    > this is bar
    > this is foo, again

Comme mentionné dans d'autres réponses, si vous avez noclobber alors utilisez l'option >| opérateur.

-3voto

affinities23 Points 28

Si vous avez une sortie qui peut avoir des erreurs, vous pouvez utiliser une esperluette et un plus grand que, comme suit :

my_task &> 'Users/Name/Desktop/task_output.log' ceci redirigera à la fois stderr et stdout vers le fichier journal (au lieu de stdout seulement).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X