Como anexar tee a um arquivo no Bash?

74

Estes são comandos que digito no terminal

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

Quando olho para o arquivo output.log, vejo apenas 'Segunda linha'. Como posso garantir que o tee seja anexado (em vez de apagar o arquivo)?

Eu gostaria de poder ver isso no arquivo:

First Line
Second Line

Eu deveria estar abordando isso de outra maneira?

Obrigado!

Bluebeep
fonte

Respostas:

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

Do man tee :

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

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

Nota: O uso -aainda cria o arquivo mencionado.

user4556274
fonte
12
Para o benefício dos pesquisadores, o modificador -a é para 'anexar' ou adicionar ao final. Sem -a, o comando tee substitui o arquivo.
Chile555
11
O tee ainda cria o arquivo se ele não existir quando a opção "-a" estiver incluída?
Bryson S.
@ chili555: é possível anexar ao início do arquivo, não ao final, e não sobrescrever um arquivo? Obrigado.
Саша Черных
2
@ СашаЧерных Nenhum que eu saiba. Isso soa como um ótimo assunto para uma nova pergunta!
precisa saber é o seguinte
11
@ Source_file 'cat source.file destination.file | tee destination.file 'anexará source.file no início de destination.file. O único problema com essa abordagem é que o tee será impresso para stdout nos dois arquivos.
precisa saber é o seguinte