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!

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.