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.