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!

Bluebeep
la source

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é.

utilisateur4556274
la source
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