tee (comando) - tee (command)
| Desenvolvedor (s) | AT&T Bell Laboratories , Mike Parker, Richard Stallman , David MacKenzie, Microware , Jim Hall , JP Software , Microsoft |
|---|---|
| lançamento inicial | Junho de 1974 |
| Sistema operacional | Unix , semelhante ao Unix , Plan 9 , Inferno , OS-9 , FreeDOS , Windows , ReactOS , IBM i |
| Plataforma | Plataforma cruzada |
| Modelo | Comando |
Na computação, teeé um comando em interpretadores de linha de comando ( shells ) usando fluxos padrão que lê a entrada padrão e a grava na saída padrão e em um ou mais arquivos, duplicando efetivamente sua entrada. É usado principalmente em conjunto com tubos e filtros . O comando tem o nome do divisor em T usado no encanamento .
Visão geral
O teecomando normalmente é usado para dividir a saída de um programa de forma que possa ser exibida e salva em um arquivo. O comando pode ser usado para capturar a saída intermediária antes que os dados sejam alterados por outro comando ou programa. O comando tee lê a entrada padrão e , em seguida, grava seu conteúdo na saída padrão . Ele simultaneamente copia os dados para os arquivos ou variáveis especificados. A sintaxe difere dependendo da implementação do comando.
Implementações
O comando está disponível para sistemas operacionais Unix e semelhantes a Unix , Microware OS-9 , DOS (por exemplo , 4DOS , FreeDOS ), Microsoft Windows (por exemplo , 4NT , Windows PowerShell ) e ReactOS . O teecomando GNU / Linux foi escrito por Mike Parker, Richard Stallman e David MacKenzie. A versão FreeDOS foi desenvolvida por Jim Hall e está licenciada sob a GPL . O comando tee também foi transferido para o sistema operacional IBM i .
Além disso, o spongecomando oferece recursos semelhantes.
Unix e semelhante ao Unix
tee [ -a ] [ -i ] [ File ... ]
Argumentos:
-
File ...Uma lista de arquivos, cada um dos quais recebe a saída.
Bandeiras:
-
-aAcrescenta a saída a cada arquivo, em vez de sobrescrevê-la. -
-iIgnora interrupções.
O comando retorna os seguintes valores de saída ( status de saída ):
- 0 A entrada padrão foi copiada com sucesso para todos os arquivos de saída.
- > 0 Ocorreu um erro.
O uso da substituição de processo permite que mais de um processo leia a saída padrão do processo de origem. Leia este exemplo do GNU Coreutils, tee invocation .
Nota: Se uma gravação em qualquer operando de Arquivo aberto com sucesso não for bem-sucedida, as gravações em outros operandos de Arquivo abertos com sucesso e a saída padrão continuarão, mas o valor de saída será> 0.
4DOS e 4NT
TEE [/A] file...
Argumentos:
-
fileUm ou mais arquivos que receberão a saída "tee'd".
Bandeiras:
-
/AAnexe o conteúdo do pipeline aos arquivos de saída em vez de sobrescrevê-los.
Nota: Quando tee é usado com um tubo, a saída do comando anterior é gravada em um arquivo temporário . Quando esse comando termina, tee lê o arquivo temporário, exibe a saída e o grava no (s) arquivo (s) fornecido (s) como argumento da linha de comando .
Windows PowerShell
tee [-FilePath] <String> [-InputObject <PSObject>] tee -Variable <String> [-InputObject <PSObject>]
Argumentos:
-
-InputObject <PSObject>Especifica a entrada do objeto para o cmdlet. O parâmetro aceita variáveis que contêm os objetos e comandos ou expressão que retornam os objetos. -
-FilePath <String>Especifica o arquivo onde o cmdlet armazena o objeto. O parâmetro aceita caracteres curinga que resolvem em um único arquivo. -
-Variable <String>Uma referência aos objetos de entrada será atribuída à variável especificada.
Nota: tee é implementado como um ReadOnly alias de comando . O nome do cmdlet interno é Microsoft.PowerShell.Utility\Tee-Object.
Exemplos
Unix e semelhante ao Unix
- Para visualizar e salvar a saída de um comando ( lint ) ao mesmo tempo:
lint program.c | tee program.lint
Isso exibe a saída padrão do comando lint program.cno computador e, ao mesmo tempo, salva uma cópia dele no arquivo program.lint. Se um arquivo nomeado program.lintjá existir, ele será excluído e substituído.
Da mesma forma, os fluxos de saída stdout e stderr podem ser redirecionados para a saída padrão e o program.lintredirecionamento de fluxo usando:
lint program.c 2>&1 | tee program.lint
- 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 lint program.ccomando no computador e, ao mesmo tempo, anexa uma cópia ao final do program.lintarquivo. Se o program.lintarquivo não existir, ele será criado.
- 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 ao comando sudo . sudo não consegue canalizar a saída padrão para um arquivo. Ao despejar seu fluxo stdout em /dev/null, também suprimimos a saída espelhada no console. O comando acima dá ao usuário atual acesso root a um servidor via ssh, instalando a chave pública do usuário na lista de autorização de chave do servidor.
No Bash , a saída pode ser filtrada antes de ser gravada no arquivo - sem afetar a saída exibida - usando a substituição de processo . Por exemplo,
ls --color=always | tee >(sed "s/\x1b[^m]*m//g" > ls.txt)
remove códigos de escape ANSI comuns antes de gravar ls.txt, mas os mantém para exibição.
4DOS e 4NT
Este exemplo procura no arquivo wikipedia.txtquaisquer linhas que contenham a string " 4DOS ", faz uma cópia das linhas correspondentes 4DOS.txt, classifica as linhas e as grava no arquivo de saída 4DOSsorted.txt:
find "4DOS" wikipedia.txt | tee 4DOS.txt | sort > 4DOSsorted.txt
Windows PowerShell
- Para visualizar e salvar a saída de um comando ao mesmo tempo:
ipconfig | tee OutputFile.txt
Isso exibe a saída padrão do comando ipconfigna janela do console e, simultaneamente, salva uma cópia dele no arquivo OutputFile.txt.
- Para exibir e salvar todos os processos em execução , filtrados de forma que apenas programas começando com svc e possuindo mais de 1000 identificadores sejam exibidos:
Get-Process | Where-Object { $_.Name -like "svc*" } | Tee-Object ABC.txt | Where-Object { $_.Handles -gt 1000 }
Este exemplo mostra que a entrada canalizada para tee pode ser filtrada e que tee é usado para exibir essa saída, que é filtrada novamente para que apenas os processos que possuem mais de 1000 identificadores sejam exibidos e gravem a saída não filtrada no arquivo ABC.txt.
Veja também
Referências
Leitura adicional
- McElhearn, Kirk (2006). A linha de comando do Mac OS X: Unix Under the Hood . John Wiley & Sons . ISBN 978-0470113851.
links externos
- Uma introdução sobre Linux I / O Redirection "Linux I / O Redirection" com tee
- GNU tee manual
- : entrada padrão duplicada - Referência de comandos e utilitários, The Single UNIX Specification , Issue 7 from The Open Group
- - Manual do programador do Plano 9 , Volume 1
- - Manual de comandos gerais do Inferno