tee (comando) - tee (command)

tee
Desenvolvedor (s) AT&T Bell Laboratories , Mike Parker, Richard Stallman , David MacKenzie, Microware , Jim Hall , JP Software , Microsoft
lançamento inicial Junho de 1974 ; 47 anos atrás ( 1974-06 )
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

Image
Exemplo de uso de tee : A saída de ls -lé redirecionada para tee, que os copia para o arquivo file.txt e para o pager less. O nome tee vem deste esquema - parece a letra maiúscula T

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:

  • -a Acrescenta a saída a cada arquivo, em vez de sobrescrevê-la.
  • -i Ignora 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:

  • file Um ou mais arquivos que receberão a saída "tee'd".

Bandeiras:

  • /A Anexe 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

links externos