Come aggiungere tee a un file in Bash?


74

Questi sono i comandi che inserisco nel terminale

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

Quando guardo nel file output.log vedo solo 'Second Line'. Come posso assicurarmi che tee accoda (anziché cancellare il file)?

Mi piacerebbe essere in grado di vedere questo nel file:

First Line
Second Line

Dovrei avvicinarmi a questo in un altro modo?

Grazie!

Risposte:


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

Da uomo tee :

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

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

Nota: l'utilizzo -acrea comunque il file indicato.


12
A beneficio dei ricercatori, il modificatore -a è per "accodare" o aggiungere alla fine. Senza -a, il comando tee sovrascrive il file.
chili555

1
Tee crea ancora il file se non esiste quando è inclusa l'opzione "-a"?
Bryson S.

@ chili555: è possibile aggiungere all'inizio del file, non alla fine e non sovrascrivere un file? Grazie.
Саша Черных,

2
@ СашаЧерных Nessuno di cui sono a conoscenza. Sembra un ottimo argomento per una nuova domanda!
chili555

1
@ Саша Черных 'cat source.file destination.file | tee destination.file 'aggiungerà source.file all'inizio di destination.file. L'unico problema con questo approccio è che tee stamperà su entrambi i file.
Bruno9779,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.