[ UNIX ] Entrada e Saída Padrão do UNIX Data do Documento: 05/01/2000 Ultima atualização: 05/01/2000 Palavras Chave: unix, entrada padrão, saída padrão, redirecionador Autor: Verdade @bsoluta Tradutor: Arquivo: entra_sai_unix.htm Status: completo As entradas e saídas padrões do UNIX são definidas através dos descritores padrões.
O UNIX garante que os processos sempre tenham os descritores de arquivos abertos para leitura e gravação, desta forma ao emitir-mos um comando o UNIX assume a entrada padão como sendo o teclado e a saída padão como sendo o terminal (vídeo): % ls -alp
O Comando "ls -alp" é recebido na entrada padão (0) associada ao teclado e o resultado é impresso na saída padrão de mensagens normais (1) associado ao terminal (vídeo). A saída de erro também esta associada ao terminal, desta forma pode surgir a seguinte questão: Se tanto a saída padão de mensagens normais como a saída padão de erro estão associadas ao terminal, por que existe um descritor de saída de erro? A resposta é muito simples, o UNIX permite que você mude as saídas padões e desta forma possa por exemplo separar as mensagens normais das mensagens de erro, isso pode ser muito util em situações de depuração de programas ou mesmo em atividades rotineiras. No exemplo abaixo vamos compilar um programa com alguns erros: % gcc tcplog.c -o tcplog
Os erros podem ser muitos tornando difícil a análise e você gostaria de envia-los por email para seu grupo de pesquisa a fim de que possam ajudar na depuração do programa ou mesmo grava-los em um arquivo para análise futura. Isso pode ser feito mudando-se a saída padrão de erro: % gcc tcplog.c -o tcplog 2> tcplog.erro
Usando o descritor dois (2) que identifica a saída padrão de erro enviamos os erros para um arquivo (tcplog.erro). %more tcplog.erro
Na verdade, um descritor m pode ser redirecionado usando-se m>, onde m é um número da tabela de descritores. Podemos usar formas mais extensas como: % comando 1>normal.log 2>erro.log Isso faz com que o resultado da saída padrão de mensagens normais seja redirecionada para o arquivo normal.log e os erros para o arquivo erro.log. O comando: % comando > log 2> log informa ao shell para redirecionar as mensagens normais e de erro para o arquivo log, uma forma mais extensa e reescrever o mesmo comando como: % comando 1> log 2>log o resulta é o mesmo. Mas como você é um pessoa inteligente e por isso usa UNIX :) exitem formas mais interessantes de obter o mesmo resultado: % comando > log 2>&1 Esta construção, 2>&1, quer dizer: o descritor padrão de erro (2) deve ser associado (>&) ao mesmo arquivo que está ligado ao descritor da saída padrão de mensagens normais (1). Você pode querer desprezar as saídas de erro, isso pode ser feito enviando-se as mesmas para o arquivo especial do UNIX /dev/null, este arquivo consomem as mensagens que lhe são enviadas sem ocupar espaço em disco, este arquivo também é conhecido como burraco negro. Vejamos uma aplicação deste recurso. Se você for um usuário "mortal", provavelmente exite uma série de diretórios ao qual não possui acesso, ao executar o comando "find" apartir da raiz "/" você vai obter algumas mensagens de erros, vajamos: % find / -name core -print
Uma forma de obter a listagem somento dos arquivos ao qual possui acesso é enviar os erros para o burraco negro (/dev/null): % find / -name core 2> /dev/null
Referência :
|