Introdução
Imagine cada comando do Linux como uma máquina. Os dados entram por um lado, e a máquina os processa. Mas, ao contrário de máquinas simples, que têm apenas uma saída, um comando do Linux tem dois canais separados para enviar informações:
- Saída padrão (stdout): o “canal de saída normal”. Quando a máquina funciona corretamente, o produto final sai por aqui.
- Erro padrão (stderr): o “canal de erro”. Quando algo dá errado, as mensagens de erro saem por aqui.
Por padrão, os dois canais exibem seu conteúdo na tela.
Esse modelo de “fluxos” é uma das ideias mais importantes ao trabalhar com o shell. Os comandos do Linux não apenas “imprimem texto”; eles geralmente produzem fluxos estruturados de dados. Quando você entende esses fluxos, o redirecionamento e os pipelines deixam de parecer mágicos e passam a fazer sentido.
Neste laboratório, você executará comandos para observar esses dois fluxos diferentes em ação.
Saída padrão (stdout)
Vamos observar o “canal de saída normal” em ação.
Usaremos ls, que lista arquivos. Quando ls funciona corretamente, ele envia os nomes dos arquivos para a saída padrão.
Execute este comando:
ls -l
Você deverá ver uma lista de arquivos.
O que aconteceu?
Como o comando foi executado com sucesso, o programa ls enviou a lista para o fluxo stdout. Seu terminal monitora esse fluxo e o exibe.
O ponto principal é que o terminal é apenas o destino padrão. A saída padrão não está permanentemente vinculada à tela; por isso, em breve você poderá salvá-la ou redirecioná-la para outro destino.
Erro padrão (stderr)
Agora, vamos observar o “canal de erro”. O erro padrão (stderr) é reservado para erros.
Podemos fazer o ls emitir uma mensagem de erro solicitando a listagem de um diretório que não existe.
Execute:
ls -l /nonexistent_directory
Você verá uma mensagem de erro.
O que aconteceu?
O comando falhou. Em vez de enviar a mensagem para stdout, ele a enviou para o fluxo stderr.
Por padrão, seu terminal monitora os dois fluxos. Por isso, ele exibe o erro como se fosse um texto normal.
É por isso que iniciantes muitas vezes presumem que mensagens de sucesso e mensagens de erro são “o mesmo tipo de saída”. Elas podem parecer iguais na tela, mas internamente percorrem canais diferentes.
Saída combinada
Agora, vamos observar o que acontece quando um comando produz os dois tipos de saída.
Pediremos ao ls que faça duas coisas:
- Liste o diretório atual
.(operação bem-sucedida). - Liste
/fake(operação malsucedida).
Execute:
ls -l . /fake
Observe com atenção. Você deverá ver duas partes:
- Uma mensagem de erro para
/fake. - Uma listagem bem-sucedida para
..
O que aconteceu?
O erro percorreu o fluxo stderr. A lista de arquivos percorreu o fluxo stdout. Seu terminal recebeu os dois fluxos e exibiu todo o conteúdo na tela.
Essa distinção é fundamental. No próximo laboratório, você aprenderá a capturar stdout enquanto ignora stderr.
Essa separação não é apenas teórica. Em automações reais, os scripts muitas vezes precisam salvar os resultados normais e, ao mesmo tempo, manter os erros visíveis, ou registrar os erros sem misturá-los aos dados úteis.
Resumo
Neste laboratório, você explorou os “fluxos de dados” usando a analogia de uma máquina com dois canais:
- Saída padrão: o canal para resultados normais.
- Erro padrão: o canal para mensagens de erro.
Por padrão, o Linux mistura os dois fluxos na tela. Em seguida, você aprenderá a separá-los.



