Pular para o conteúdo

Fundamentos do sistema Linux - direcionadores

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.
Davidson Rodrigues Paulo davidsonpaulo
Hits: 111.002 Categoria: Linux Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar

Introdução

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.

O direcionadores utilizados no GNU/Linux são:
  • > (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.

   1. Introdução
   2. O direcionador >
   3. O direcionador 2>
   4. O direcionador &>
   5. Os direcionadores >>, 2>> e &>>
   6. O direcionador <
   7. O direcionador <<
   8. O direcionador |
   9. O comando tee

Por que não migram

Como converter CentOS 5 em Fedora 11

Fundamentos do sistema Linux: discos e partições

Fundamentos do sistema Linux - usuários e grupos

Compilando o Squid e criando o pacote para Slackware

Wine: Como jogar/emular no Linux seus games ou softwares mais atuais sem pagar por isso

Um tour pelos ripadores de CDs para Linux

Entrevista com Knurt, o pires voador

Atualização das provas LPIC-1, 304 e Essentials

Porquê a mascote do Linux é um pinguim

#1 Comentário enviado por JuNiOx em 26/06/2006 - 09:51h
muito bom, bem explicado.
direcionadores é matéria para LPI, caso alguém tiver interesse.

valeu
#2 Comentário enviado por jllitvay em 26/06/2006 - 10:58h
Muit bom o artigo, mas , me ajudem:

Como eu executo um comando em um terminal tty1
mas que a execução e saída do comando se dê no tty2.

Obrigado
#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 /.

Abraços,

Davidson

#4 Comentário enviado por removido em 26/06/2006 - 14:35h
Muito bom artigo sobre um tema pouco abordado. Bastante oportuno.
#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.

Valeu
#6 Comentário enviado por agk em 28/06/2006 - 09:03h
Parabéns, muito bom esse artigo.
#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.

até mais
#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."

http://www.guiafoca.org/guia/iniciante/ch-redir.htm#s-redir-maior2

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!

Muito bom!
#10 Comentário enviado por doradu em 08/02/2010 - 18:52h
marquei pra ler mais tarde
#11 Comentário enviado por gilsoncwb em 09/01/2012 - 16:35h
Muito legal seu exemplo , parabens !
#12 Comentário enviado por gustavo_logicus em 28/04/2013 - 12:16h
Muito bacana o artigo! Parabéns!
#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

Contribuir com comentário

Entre na sua conta para comentar.