Direcionadores de fluxo fazem o que o nome sugere: direcionam o fluxo da saída dos programas, enviando-as para locais diferentes da saída padrão. Esses locais podem ser arquivos, dispositivos, processos e outros programas. Nesse artigo veremos como utilizar os direcionadores do Linux para facilitar a vida do administrador de sistemas.
Uma boa parte dos programas executados no terminal possuem alguma saída. Essas saídas são enviadas por padrão para o terminal, sendo impressas na tela. Assim, consideremos o exemplo abaixo:
$ ls
Desktop doc img iso src teste tmp
Nesse caso, temos:
comando: ls;
saída: Desktop doc img iso src teste tmp.
Sendo que a saída foi enviada para o terminal, que é a saída padrão (stdout).
Mas, então, o que fazer se quisermos gravar a saída do comando ls em um arquivo de texto, por exemplo? Para isso existem os direcionadores de fluxo, de grande utilidade no GNU/Linux e essenciais para a realização de diversas tarefas de manutenção do sistema.
Direcionadores de fluxo fazem o que o nome sugere: direcionam o fluxo da saída dos programas, enviando-as para locais diferentes da saída padrão. Esses locais podem ser arquivos, dispositivos, processos e outros programas.
> (maior): Direciona a saída do comando para um arquivo, substituindo o seu conteúdo, caso o arquivo já exista;
>> (maior-maior): Direciona a saída do comando para um arquivo, adicionando o texto ao final do arquivo, caso ele já exista;
< (menor): Passa o conteúdo do arquivo como argumento para o comando;
2> (dois-maior): Direciona as saídas de erro geradas pelo programa para um arquivo, substituindo seu conteúdo, caso o arquivo já exista;
2>> (dois-maior-maior): Direciona as saídas de erro geradas pelo programa para um arquivo, adicionando o texto ao final do arquivo, caso ele já exista;
&> (e-maior): Direciona todas as saídas (normal e de erro) para um arquivo, substituindo seu conteúdo, caso ele já exista;
&>> (e-maior-maior): Direciona todas as saídas (normal e de erro) para um arquivo, adicionando o texto ao final do arquivo, caso ele já exista;
| (barra vertical ou pipe): Utiliza a saída do primeiro comando como argumento do segundo comando.
[3] Comentário enviado por davidsonpaulo em 26/06/2006 - 11:21h
Salve, jllitvay!
Bom, você pode fazer o seguinte:
$ [comando] &> /dev/tty2 &
Onde:
* comando: o comando que você quer executar, com todos os parâmetros;
* &> /dev/tty2: envia todas a saída do programa para o tty2 (você tem ue ter permissão de escrita no tty2);
* &: roda o programa em plano de fundo, para que o tty atual fique livre para executar mais comandos.
Eu testei aqui. Abri um terminal gráfico e executei o comando:
# ls -R / &> /dev/tty6 &
O terminal ficou livre e, ao ir para o /dev/tty6, eis que lá estava aparecendo a saída do comando ls -R /.
[5] Comentário enviado por wanderleihuttel em 27/06/2006 - 09:13h
Cara muito bom mesmo este artigo. Não conhecia o "tr", para excluir caracteres. Agora acho que vu conseguir fazer um relatório no meu arquivo secure, bem legal.
[7] Comentário enviado por JuNiOx em 20/07/2006 - 02:29h
algumas partes estão muito parecidas com o guiafoca, a descrição do ">>" está idêntica.
creio que poderia ter citado também nos "créditos" caso tenha retirado de lá também.
[8] Comentário enviado por davidsonpaulo em 20/07/2006 - 17:19h
Descrição do direcionador >>, de acordo com o Guia Foca Linux Iniciante, versão online:
"Redireciona a saída de um programa/comando/script para algum dispositivo ou final de arquivo ao invés do dispositivo de saída padrão (tela). A diferença entre este redirecionamento duplo e o simples, é se caso for usado com arquivos, adiciona a saída do comando ao final do arquivo existente ao invés de substituir seu conteúdo. .
Por exemplo, você pode acrescentar a saída do comando ls ao arquivo listagem do capítulo anterior usando ls / >>listagem. Use o comando cat para visualizar o conteúdo do arquivo listagem."
Sinto muito desapontá-lo, JuNiOx, mas eu não extraí nada do que está nesse artigo do Guia Foca Linux, as diferenças entre os dois textos são gritantes e as semelhanças são coisa da sua cabeça.
[9] Comentário enviado por volcom em 26/08/2009 - 10:52h
Ahhhhh!!
Eu já estava usando tooooodos os direcionadores, mas o tee me salvou a pele pra executar um Script enviando as mensagens para a tela e para o arquivo de log ao mesmo tempo...
Ops, mas o tee sobrescreve o arquivo anterior...para resolver isso usei a opção tee -a para ele adicionar/concatenar o conteúdo!
[13] Comentário enviado por crivellari em 22/07/2014 - 09:08h
Olá tenho uma pequena dúvida
O direcionador 2>&1 é igual a &> (pelo menos fazem a mesma função)
Pelo que vejo nos exemplos e descrição que procurei na net. Quando usar um e quando usar ou outro?
Agradeço antecipadamente pela ajuda.
Um grande abraço
Crivellari