Jak dołączyć tee do pliku w Bash?

73

Są to polecenia, które wpisuję w terminalu

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

Kiedy patrzę w plik output.log, widzę tylko „Second Line”. Jak mogę się upewnić, że tee się dołącza (zamiast usuwać plik)?

Chciałbym móc zobaczyć to w pliku:

First Line
Second Line

Czy powinienem podchodzić do tego w inny sposób?

Dzięki!

Bluebeep
źródło

Odpowiedzi:

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

Z koszulki męskiej :

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

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

Uwaga: Używanie -anadal powoduje utworzenie wspomnianego pliku.

użytkownik4556274
źródło
12
Z korzyścią dla poszukiwaczy modyfikator -a służy do dołączania lub dodawania na końcu. Bez opcji -a polecenie tee zastępuje plik.
chili555,
1
Czy tee nadal tworzy plik, jeśli nie istnieje, gdy włączona jest opcja „-a”?
Bryson S.,
@ chili555: czy możliwe jest dołączanie na początku pliku, a nie do końca, i nie zastępuje pliku? Dzięki.
Саша Черных
2
@ СашаЧерных Nic, o czym jestem świadomy. To brzmi jak świetny temat na nowe pytanie!
chili555,
1
@ Саша Черных 'cat source.file destination.file | tee destination.file 'dołączy plik source.file na początku pliku destination.file. Jedynym haczykiem przy takim podejściu jest to, że tee wydrukuje, aby stdout oba pliki.
Bruno9779,