A palavra tee é pronunciada ti
O Comando tee pega o resultado ou valor do teclado(ou outro dispositivo de entrada padrão, standart input) e joga esse resultado na tela(standard output ou saída padrão) ou em um arquivo. Basicamente, ele quebra a saída de um programa para que possa ser exibido e salvo em um arquivo. Ele executa as duas tarefas simultaneamente, copia o resultado para os arquivos ou variáveis especificados e também exibe o resultado.
Opções para o Comando tee
- -a não sobrescreve o arquivo, mas acrescenta ao conteúdo já existente.
- -i, –ignore-interrupts ignora os sinais de interrupção
- –help exibe ajuda sobre o comando tee
- –version exibe a versão da ferramenta tee
Praticando o Uso de tee
#1 vamos exibir a ajuda sobre o comando tee: tee –help
maria@debian11VM:~$ tee --help
#2 vamos pega o resultado do comando echo e gravar dentro de arquivo01.txt: echo “contando quantos caracteres há aqui” | tee arquivo01.txt
maria@debian11VM:~$ echo "contando quantos caracteres há aqui" | tee arquivo01.txt
#3 vamos contar quantas palavras há em arquivo01.txt e adicionar(-a) dentro de arquivo02.txt: wc -w arquivo01.txt | tee -a arquivo02.txt
maria@debian11VM:~$ wc -w arquivo01.txt | tee -a arquivo02.txt
#4 vendo a versão da ferramenta tee: tee –version
maria@debian11VM:~$ tee --version tee (GNU coreutils) 8.32 Copyright (C) 2020 Free Software Foundation, Inc. Licença GPLv3+: GNU GPL versão 3 ou posterior <https://gnu.org/licenses/gpl.html> Este é um software livre: você é livre para alterá-lo e redistribuí-lo. NÃO HÁ QUALQUER GARANTIA, na máxima extensão permitida em lei. Escrito por Mike Parker, Richard M. Stallman e David MacKenzie.
Ocultando a saída
Vimos que o comando tee exibe o exibe o resultado na tela(saída padrão ou standard output) ao mesmo tempo que grava no arquivo.
Para fazer com que a ferramenta tee armazene a saída do comando em um arquivo e não exiba a saída do terminal, use >/dev/null ao final do comando: cat arquivo01.txt | tee -a arquivo02.txt >/dev/null
maria@debian11VM:~$ cat arquivo01.txt | tee -a arquivo02.txt >/dev/null
Ignorar Interrupções
Para permitir que tee saia corretamente mesmo após o comando anterior ter sido interrompido, adicione o argumento -i (ou –ignore-interrupts): ping categoriaoutros.com.br | tee -i arquivo02.txt
maria@debian11VM:~$ ping categoriaoutros.com.br | tee -i arquivo02.txt
Mesmo dando um control + c para parar o ping o tee não é afetado.
Use tee para Redirecionar a saída de um comando para outro
Para permitir que tee saia corretamente mesmo após o comando anterior ter sido interrompido, adicione o argumento -i (ou –ignore-interrupts):
maria@debian11VM:~$ ls /etc/ | tee -i arquivo02.txt >/dev/null
Usando tee com Sudo
Para permitir que tee grave em um arquivo onde somente o root tenha acesso ou arquivo pertencente a outro usuário, coloque o comando sudo logo antes de tee.
maria@debian11VM:~$ echo "adiciona texto ao arquivo de joao" | sudo tee -a /home/joao/documentos.txt
Usando tee no Vim Editor
Se você tentar editar um arquivo que não tenha permissão, ou propriedade, no Vim sem usar o comando sudo, ao tentar salvar as alterações produzirá um erro.
para conseguir salvar sem precisar sair e entrar novamente como sudo basta executar dentro do vim:
:w !sudo tee %
maria@debian11VM:~$ :w !sudo tee %
Depois de inserir a senha do sudo, o Vim exibe um aviso, mas grava as alterações no arquivo.