Comment ajouter un tee à un fichier dans Bash?


75

Ce sont des commandes que je tape dans le terminal

echo -e "First Line" | tee ~/output.log
echo -e "Second Line" | tee ~/output.log

Quand je regarde dans le fichier output.log, je ne vois que «Deuxième ligne». Comment puis-je m'assurer que le tee-shirt est ajouté (plutôt que d'effacer le fichier)?

J'aimerais pouvoir voir ceci dans le fichier:

First Line
Second Line

Devrais-je aborder cette autre manière?

Merci!

Réponses:


119
echo -e "First Line" | tee ~/output.log
echo -e "Second Line" | tee -a ~/output.log
                            ^^

De l' homme tee :

   Copy standard input to each FILE, and also to standard output.

   -a, --append
          append to the given FILEs, do not overwrite

Remarque: L'utilisation -acrée toujours le fichier mentionné.


12
Pour le bénéfice des chercheurs, le modificateur -a est pour 'ajouter', ou ajouter à la fin. Sans -a, la commande tee remplace le fichier.
chili555

1
Tee crée-t-il toujours le fichier s'il n'existe pas lorsque l'option "-a" est incluse?
Bryson S.

@ chili555: est-il possible d'ajouter au début du fichier, pas à la fin, et ne pas écraser un fichier? Merci.
Саша Черных

2
@ СашаЧерных Aucun que je sache. Cela semble être un excellent sujet pour une nouvelle question!
chili555

1
@ Саша Черных 'cat source.file destination.file | tee destination.file 'ajoutera source.file au début de destination.file. Le seul inconvénient de cette approche est que tee imprimera sur les deux fichiers.
Bruno9779
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.