Tee
não é inútil
Talvez você soubesse disso, afinal? Se não, continue a ler! Ou se você sabe como funciona, mas não sabe ao certo por que existe, pule para o final para ver como ele se encaixa na filosofia do Unix.
Qual é o propósito tee
?
Na sua forma mais simples, coleta dados na entrada padrão e grava-os na saída padrão e em um (ou mais) arquivos. Foi comparado a uma peça de T do encanamento na maneira como divide uma entrada em duas saídas (e duas direções).
Exemplos
Vamos dar o seu primeiro exemplo:
do_something | tee -a logfile
Isso pega a saída do_something
e a anexa ao arquivo de log, enquanto também a exibe ao usuário. De fato, a páginatee
da Wikipedia apresenta esse como o segundo exemplo:
Para visualizar e anexar a saída de um comando a um arquivo existente:
lint program.c | tee -a program.lint
Isso exibe a saída padrão do comando lint program.c no computador e, ao mesmo tempo, anexa uma cópia ao final do arquivo program.lint. Se o arquivo program.lint não existir, ele será criado.
O exemplo a seguir tem outro uso: escalação de permissões :
Para permitir o escalonamento de permissões:
cat ~/.ssh/id_rsa.pub | ssh admin@server "sudo tee -a /root/.ssh/authorized_keys2 > /dev/null"
Este exemplo mostra tee sendo usado para ignorar uma limitação inerente no sudo
comando. sudo
não consegue canalizar a saída padrão para um arquivo. Ao despejar seu fluxo de saída padrão /dev/null
, também suprimimos a saída espelhada no console. O comando acima fornece ao usuário root acesso atual a um servidor através de ssh, instalando a chave pública do usuário na lista de autorização de chave do servidor.
Ou talvez você queira pegar a saída de um comando, escrever isso em algum lugar e também usá-lo como entrada para outro comando?
Você também pode usar o comando tee para armazenar a saída de um comando em um arquivo e redirecionar a mesma saída que uma entrada para outro comando.
O comando a seguir fará um backup das entradas do crontab e passará as entradas do crontab como uma entrada para o comando sed que fará a substituição. Após a substituição, ele será adicionado como um novo trabalho cron.
$ crontab -l | tee crontab-backup.txt | sed 's/old/new/' | crontab –
( exemplos de uso do comando Tee para crédito )
Tee
trabalha com a filosofia Unix:
Escreva programas que fazem uma coisa e fazem bem. Escreva programas para trabalhar juntos. Escreva programas para lidar com fluxos de texto, porque essa é uma interface universal.
(Crédito ao básico da filosofia Unix )
tee
serve para todos:
- faz uma coisa: cria uma cópia extra da entrada
- ele funciona com outros programas porque é a cola (ou uma peça de encanamento em 'T', se você preferir) que permite que outros programas funcionem juntos, como nos exemplos acima
- isso é feito através da manipulação de um fluxo de texto fornecido na entrada padrão