19/11/2009

Redirecionamentos em linux

Funcionamento dos recursos de direcionamento de entrada e saída do sistema GNU/Linux

Entrada e saída padrão
Pode-se considerar que a entrada e saída padrão dos dados são respedtivamente o teclado e a tela, que são denominadas também de stdout e stdin. Essas saídas e entradas podem ser facilmente tratadas (direcionadas ou modificadas) com alguns caracteres especiais.
  • Entrada Padrão: STDIN (0)
  • Saída padrão: STDOUT (1)
  • Saída de Erro: STDERR (2)

Redirecionamentos
  • [ > ] : redireciona a saída padrão para um arquivo. No caso a sáida padão é toda saída gerada por um comando que não seja proveniente de um erro, por exemplo o resultado de um comando ou os dados a serem exibidos em um script. O uso desse redirecionamento cria um arquivo caso o mesmo não exista e sobrescreve todo o conteúdo caso o arquivo já exista.
Ex: [user@host$:] ls -la > arquivoSaida.txt
[user@host$:] cat arquivo1.txt > arquivoSaida.txt

  • [ >> ] : similar ao redirecionamento anterior, porem concatena o conteúdo com o já existente. Caso o arquivo não exista ele é criado
Ex: [user@host$:] ls -la >> arquivoSaida.txt
[user@host$:] cat arquivo1.txt >> arquivoSaida.txt

  • [ < ] : função contrária a do [ > ], ele informa ao shell que a entrada não será feita pela entrada padrão (teclado/stdin/1) mas por um arquivo repassado como argrumento
Ex: [user@host$:] mail usuario <>> arquivoSaida.txt

  • [ << ] : indica ao shell que o escopo do comando inicia na linha seguinte e termina quando encontrar um rótulo (label) definido.
Ex: [user@host$:] mail usuario <> SP, `date`
> Hoje os usuários conectados eram:
> `who`
> FimMail
[user@host$:]

  • [ 2> ]: redireciona a saída de erro para um arquivo apagando seu conteúdo. Se o arquivo não existir, ele será criado.
Ex: [user@host$:] cat arqNaoExistente.txt 2> saidaDeErro.txt

  • [ 2>> ]: redireciona a saída de erro concatenando com o conteúdo do arquivo. Se o arquivo não existir, ele será criado.
Ex: [user@host$:] cat arqNaoExistente.txt 2>> saidaDeErro.txt

Estes útimos dois operadores podem ser utilizados em conjunto com os anteriores, redirecioando a saida para um arquivo e a saída de erro para outro.

Ex: [user@host$:] comando > saidaPadrao.txt 2> saidaErro.log

  • [ >&2 ]: redireciona a saída padrão para a saída de erro.

  • [ 2>&1 ]: Redireciona a saída de erro para a saída padrão. No exemplo abaixo toda a saída será escrita no arquivo.
Ex: [user@host$:] comando > saidaPadrao.txt 2>&1

  • [ >&- ]: fecha a saída de padão. As mensagens de erro não serão exibidas.

  • [ 2>&- ]: fecha a saída de erro. As mensagens de erro não serão exibidas.
Ex: [user@host$:] cat arqNaoExixtente.txt 2>&-
[user@host$:] ipconfig 2>&-

  • [ | ]: conecta a saída padrão com a entrada padrão de outro comando.
Ex: [user@host$:] ps -ax | grep bash

Exemplos gerais.
1. Armazenar todo o conteúdo de um script em um arquivo, para controlar seu log.
[user@host$:] ./backup.sh > /var/logs/logBackup.sh 2>&1
2. Armazenar todo o conteúdo de um script em um arquivo, para controlar seu log, sem apagar o conteúdo anterior.
[user@host$:] ./backup.sh >> /var/logs/logBackup.sh 2>&1
3. Procurar os arquivos modificados a mais de 30 dias
[user@host$:] find /home/public_html/ -type f -mtime +30 -exce ls {} \; > arquivosModif.txt

Fontes

  • http://www.inf.ufpr.br/afms03/shell3.html
  • http://www.mhavila.com.br/topicos/unix/shscript.html
  • http://www.vivaolinux.com.br/artigo/Operadores-de-redirecionamento/
  • http://www.ultramaratonahowto.com.br/2008/tutoriais/shell_ultra_maratona.pdf

Nenhum comentário:

Postar um comentário

Sinta-se a vontade para comentar!
Colaborações, criticas, sugestões, dúvidas, todos os comentários são bem vindos!