Como executar comandos a partir de entrada padrão usando tee e xargs no Linux

Como executar comandos a partir de entrada padrão usando tee e xargs no Linux

Ao usar a linha de comando, você pode passar diretamente na saída de um programa (por exemplo, uma ferramenta que gera algumas informações ou estatísticas do sistema) como entrada para outro programa (como filtragem de texto ou ferramentas de busca de padrões como Grep, Sed ou Awk, para mais processamento), usando um pipeline.

[Você também pode gostar: Aprenda o básico de como o Linux E/S (entrada/saída) de redirecionamento]

Dois dos utilitários de linha de comando mais importantes que podem ser usados ​​com oleodutos para construir linhas de comando são:

  • XARGS - lê fluxos de dados da entrada padrão, depois gera e executa linhas de comando.
  • Tee - lê a partir de entrada padrão e grava simultaneamente para saída padrão e um ou muitos arquivos. É mais um comando de redirecionamento.

Neste artigo simples, descreveremos como criar e executar vários comandos a partir de entrada padrão usando tubos, Tee, e Xargs Comandos no Linux.

A sintaxe mais simples para usar um cano, que você já pode ter visto em comandos em muitos de nossos tutoriais do Linux, é o seguinte. Mas você pode construir uma linha de comando mais longa com vários comandos.

$ command1 args | comando2 args ou # command1 args | comando2 args | comando3 args… 

Abaixo está um exemplo de uso de um pipeline para passar a saída do comando DMESG para o comando Head.

$ dmesg | cabeça 
Passe a saída do comando para outro comando

Como usar XARGs para executar comandos

Neste exemplo, o segundo comando converte a saída Muti-line em uma única linha usando XARGS.

$ LS -1 *.sh $ ls -1 *.sh | Xargs 
Execute comandos usando XARGs

Para contar o número de linhas/palavras/caracteres em cada arquivo em uma lista, use os comandos abaixo.

$ ls *.sh | XARGS WC -L #Count Número de linhas em cada arquivo $ LS *.sh | XARGS WC -W #Count Número de palavras em cada arquivo $ LS *.sh | XARGS WC -C #Count Número de caracteres em cada arquivo $ LS *.sh | XARGS WC #Count Lines, Words and Personra em cada arquivo 
Conte as palavras do arquivo usando XARGs

O comando abaixo encontra e exclui recursivamente o diretório nomeado Todos no diretório atual.

$ encontre . -nome "Todos"-Type d -print0 | xargs -0 /bin /rm -rf"  " 

O comando encontre com a opção -print0 Ação permite a impressão do caminho completo do diretório na saída padrão, seguida por um caractere nulo e -0 XARGS Flag lida com espaço em nomes de arquivos.

Você pode encontrar outro prático comando xargs Exemplos de uso nesses artigos:

  • Como copiar um arquivo para vários diretórios no Linux
  • Renomeie todos os arquivos e nomes de diretórios para minúsculas no Linux
  • 4 maneiras de converter em lote seu png em jpg e vice-versa
  • 3 maneiras de excluir todos os arquivos em um diretório, exceto um ou poucos arquivos com extensões

Como usar Tee com comandos no Linux

Este exemplo mostra como enviar a saída de comando para a saída padrão e salvá -la em um arquivo; O comando abaixo permite que você visualize os processos de execução superior por memória mais alta e uso da CPU no Linux.

$ ps -eo cmd, pid, ppid,%mem,%cpu - -sort = -%mem | cabeça | TopProcs Tee.TXT $ CAT Topprocs.TXT 
Salvar saída de comando no arquivo

Para anexar dados em um (s) arquivo (s) existente, passe o -a bandeira.

$ ps -eo cmd, pid, ppid,%mem,%cpu - -sort = -%mem | cabeça | Tee -a TopProcs.TXT 

Você pode encontrar mais informações sobre o Tee e Xargs Páginas de homem.

$ man Xargs $ Man Tee 

Isso é tudo! Não se esqueça de conferir nosso artigo especial: A - Z Linux Comandos - Visão geral com exemplos.

Neste artigo, descrevemos como gerar linhas de comando usando pipelines; xargs e comandos de tee. Você pode fazer qualquer pergunta ou compartilhar qualquer pensamento através do formulário de feedback abaixo.