Réponses:
Utilisez >>
plutôt que >
lors de la direction de la sortie vers un fichier
your_command >> file_to_append_to
S'il file_to_append_to
n'existe pas, il sera créé.
Exemple:
$ echo "hello" > file
$ echo "world" >> file
$ cat file
hello
world
Pour append
utiliser un fichier >>
echo "hello world" >> read.txt
cat read.txt
echo "hello siva" >> read.txt
cat read.txt
alors la sortie doit être
hello world # from 1st echo command
hello world # from 2nd echo command
hello siva
Pour overwrite
utiliser un fichier >
echo "hello tom" > read.txt
cat read.txt
alors le résultat est
hello tom
Vous pouvez utiliser l'opérateur >>. Cela ajoutera les données d'une commande à la fin d'un fichier texte.
Pour tester cela, essayez de lancer:
echo "Hi this is a test" >> textfile.txt
Faites cela plusieurs fois, puis exécutez:
cat textfile.txt
Vous verrez que votre texte a été ajouté plusieurs fois au fichier textfile.txt.
Utilisez command >> file_to_append_to
pour ajouter à un fichier.
Par exemple echo "Hello" >> testFile.txt
ATTENTION: si vous n'en utilisez qu'un seul, >
vous écraserez le contenu du fichier. Pour vous assurer que cela ne se produira jamais, vous pouvez ajouter set -o noclobber
à votre .bashrc
.
Cela garantit que si vous tapez accidentellement command > file_to_append_to
dans un fichier existant, il vous avertira que le fichier existe déjà. Exemple de message d'erreur:file exists: testFile.txt
Ainsi, lorsque vous l'utiliserez, >
il vous permettra uniquement de créer un nouveau fichier, pas d'écraser un fichier existant.
Utilisez l' >>
opérateur pour ajouter du texte à un fichier.
L'utilisation de tee avec l'option -a (--append) vous permet d'ajouter à plusieurs fichiers à la fois et également d'utiliser sudo (très utile lors de l'ajout à des fichiers protégés). En plus de cela, il est intéressant si vous devez utiliser d'autres shells en plus de bash, car tous les shells ne prennent pas en charge les opérateurs> et >>
echo "hello world" | sudo tee -a output.txt
Ce fil a de bonnes réponses sur le tee
pour toute la question:
cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
cela ajoutera 720 lignes (30 * 24) dans o.txt et après renommera le fichier en fonction de la date actuelle.
Exécutez ce qui précède avec le cron toutes les heures, ou
while :
do
cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
sleep 3600
done
J'utiliserais printf au lieu d'écho car il est plus fiable et traite \n
correctement le formatage comme la nouvelle ligne .
Cet exemple produit une sortie similaire à écho dans les exemples précédents:
printf "hello world" >> read.txt
cat read.txt
hello world
Cependant, si vous deviez remplacer printf par echo dans cet exemple, echo traiterait \ n comme une chaîne, ignorant ainsi l'intention
printf "hello\nworld" >> read.txt
cat read.txt
hello
world
Par exemple, votre fichier contient:
1. mangesh@001:~$ cat output.txt
1
2
EOF
si vous voulez ajouter à la fin du fichier alors ----> rappelez-vous les espaces entre 'texte' >> 'nom de fichier'
2. mangesh@001:~$ echo somthing to append >> output.txt|cat output.txt
1
2
EOF
somthing to append
Et pour écraser le contenu du fichier:
3. mangesh@001:~$ echo 'somthing new to write' > output.tx|cat output.tx
somthing new to write
cat
... est complètement farfelu. (Il est vide car vous venez de rediriger la sortie standard vers un fichier.)
echo
supprime les sauts de ligne de la chaîne. Comment ajouter à un fichier une chaîne contenant des sauts de ligne?