Como executar comandos a partir de entrada padrão usando tee e xargs no Linux
- 4760
- 66
- Robert Wunsch DVM
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çaPasse 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 | XargsExecute 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 arquivoConte 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.TXTSalvar 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.
- « Como instalar a linguagem de programação R no Linux
- Como usar o comando 'tee' no Linux [8 exemplos úteis] »