você está aqui: Home  → Arquivo de Mensagens

Bash - utilizando a saída de um comando como entrada de outro

Colaboração: Rodrigo Bernardo Pimentel

Data de Publicação: 07 de Agosto de 2000

Muitas vezes queremos utilizar a saída de um comando como entrada para outro, mas o primeiro espera um arquivo. Por exemplo, podemos querer fazer um diff da saída de dois comandos. Digamos que temos dois diretórios supostamente idênticos (talvez um seja o backup do outro), mas queremos checar. Há várias formas de se fazer isso, mas uma seria

  # ls -l /home/rbp > /tmp/arq1
  # ls -l /home/rbp-bak > /tmp/arq2
  # diff /tmp/arq1 /tmp/arq2
  (ou, para quem se lembra de uma dica anterior)
  # diff /tmp/arq{1,2}
  # rm /tmp/arq1 /tmp/arq2

Como todo bom usuário de Unix, a preguiça nos impele a usar um número mínimo de comandos (ou seja, menos digitação). Existe um modo de se criarem "arquivos virtuais" temporários no bash. A expressão

  <(comando)

executa "comando" e fornece um "file descriptor" com sua saída. Em termos práticos, é como se um arquivo temporário fosse criado com a saída do comando e apagado depois de usado. Assim, o exemplo acima poderia ficar como:

  # diff <(ls -l /home/rbp) <(ls -l /home/rbp-bak)


Veja a relação completa dos artigos de Rodrigo Bernardo Pimentel

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script