Cada comando pode usar três canais, seja para entrada ou para saída:
Saída padrão. Esse é o canal de saída padrão. Sempre que um comando imprime algo, ele usa o canal de saída padrão.
Entrada padrão. Se um comando precisar da entrada dos usuários ou de outros comandos, ele usará esse canal.
Erro padrão. Os comandos usam esse canal para gerar relatórios de erros.
Para redirecionar os canais, as possibilidades são as seguintes:
Comando > Arquivo
Grava a saída do comando em um arquivo, apagando um arquivo existente. Por exemplo, o comando ls grava sua saída no arquivo listing.txt:
ls > listing.txt
Comando >> Arquivo
Anexa a saída do comando a um arquivo. Por exemplo, o comando ls anexa sua saída ao arquivo listing.txt:
ls >> listing.txt
Comando < Arquivo
Lê o arquivo como entrada do comando em questão. Por exemplo, o comando read extrai o conteúdo do arquivo para a variável:
read a < foo
Comando1 | Comando2
Redireciona a saída do comando à esquerda como entrada para o comando à direita. Por exemplo, o comando cat gera a saída do conteúdo do arquivo /proc/cpuinfo. Essa saída é usada por grep para filtrar apenas as linhas que contêm cpu:
cat /proc/cpuinfo | grep cpu
Cada canal possui um descritor de arquivo: 0 (zero) para entrada padrão, 1 para saída padrão e 2 para erro padrão. É permitido inserir esse descritor de arquivo antes de um caractere < ou >. Por exemplo, a linha a seguir procura por um arquivo que começa com foo, mas suprime seus erros redirecionando-o para /dev/null:
find / -name "foo*" 2>/dev/null