Os arquivos no ambiente UNIX possuem forma livre, consistindo apenas de uma
seqüência de caracteres. As quebras de linha (nova linha) são delimitadas por
caracteres de nova linha
n, enquanto o final de arquivo
delimitado por
0 ou
+
, que representam EOF
(End Of File). Cada arquivo pode ser lido caracter a caracter e gerado
da mesma forma. Para se referir a um arquivo, o sistema usa os descritores
de arquivos, que são palavras chave associadas a cada arquivo. Os sistemas de
arquivos serão explicados em maior detalhe numa seção adiante, mas este conceito
nos serve para entender um ponto chave do trabalho do shell.
O shell define três descritores de arquivos muito importantes:
- a entrada padrão (stdin): como o nome sugere, a entrada
padrão é o descritor de arquivo de onde um aplicativo lerá a entrada de dados se
não for informado um outro descritor de arquivos específico. Está normalmente
associada ao terminal de entrada, normalmente o teclado.
- a saída padrão (stdout): é o descritor onde será colocada a
saída de qualquer aplicativo, se outro específico não for
informado. Normalmente associada ao terminal de saída, o vídeo.
- saída de erro padrão (stderr): é onde são escritos os
erros decorrentes do processamento. Está separada da saída padrão para que os
possíveis erros ou avisos não contaminem os resultados em si. Também está associada
ao terminal de saída.
Neste contexto, a maioria dos comandos do shell agem como filtros, que possuem
uma única entrada (stdin) e duas saídas (stdout e stderr), por
onde entra e sai um caracter por vez. O que cada comando faz é filtrar a
entrada, transformando-a e escrevendo-a na saída padrão, enquanto as eventuais
mensagens de erro vão para a saída de erros. A Fig. ilustra
este conceito.
Figura 3.1:
Um comando do shell como um filtro.
|
leon
2008-08-19