Um conceito importante é o redirecionamento. Como o Linux foi criado por programadores e “para programadores”, então, tornou-se necessário que comandos e processos tivessem a habilidade de tratar as entradas e saídas de dados com extrema facilidade.
Antes de começar a dissecar o assunto precisamos definir alguns conceitos, tais como: entradas padrão, saída padrão e saída de erro.
- Entrada padrão (stdin) – É a entrada de um fluxo de dados, podendo ser destacado o teclado. Todos eles alimentam o computador com informações. Pode ser representado pelo número 0;
- Saída padrão (stdout) – É a saída de um fluxo de dados em condições normais. Como exemplo temos o monitor, a impressora, um arquivo, etc. Pode ser representado pelo número 1;
- Saída de erro (stderr) – É a saída de um fluxo de dados em condições de erro ou insucesso em um determinado processamento. A saída de erro poderá ser direcionada para o monitor ou arquivo de LOG. Pode ser representado pelo número 2.
O fluxo de dados para redirecionamento e canalizações numa linha de comando se inicia da esquerda para a direita.
Redirecionamento
Para redirecionar a saída-padrão de um comando para um arquivo, utiliza-se o símbolo > após este, que deve indicar o arquivo a ser criado com os dados referidos:
# cat /etc/passwd > bkp_passwd
Se o mesmo existir anteriormente, será sobrescrito. Para adicionar os valores sem apagar o conteúdo existente, usa-se >>.
Exemplos:
- Enviar toda a saída do programa bkp_servidores para o arquivo bkpserv.log:
# ./bkp_servidores 2 > bkserv.log
- Enviar toda saída padrão e de erros para o arquivo bkpserv.log:
# ./bkp_servidores > bkpserv.log 2>&1
- Enviar o resultado com saída normal para o bkp_exito.log e a saída de erro para o bkp_erro.log:
./bkp_servidores > bkp_exito.log 2> bkp_erro.log
A entrada padrão também pode ser redirecionada. O operador de redirecionamento de entrada é <. Usar uma fonte diferente do teclado para a entrada de um programa poderá parecer estranho a princípio, mas, uma vez que os programas de texto não se importam com o local de onde os seus streams de texto padrões se originam, você pode redirecionar a entrada sem problemas. Por exemplo, o seguinte comando enviará uma mensagem de mail com o conteúdo do arquivo in.txt para o usuário bono:
# mail -s “inode list” bono < in.txt
Geralmente, o programa mail pede a entrada de um usuário no terminal. Porém, com a entrada padrão redirecionada a partir do arquivo in.txt, não é necessário nenhuma entrada do usuário e o comando se executa sem intervenção.
Com isso, demos nosso “pontapé inicial” neste objetivo. No próximo artigo daremos continuidade ao assunto falando sobre canalização (pipe).
Até a próxima !!!