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!

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.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.