O que significa 3>&1 1>&2 2>&3 em um script do Shell no Linux?
O que significa 3>&1 1>&2 2>&3?
Em muitos de nossos scripts temos utilizado a sequência de caracteres 3>&1 1>&2 2>&3. Mas o que significam esses caracteres exatamente, e quando devemos empregá-los?
Bem, os números representam os descritores de arquivos (file descriptors), dos quais existem três padronizados no Linux:
- 0 – STDIN (a entrada padrão)
- 1 – STDOUT (a saída padrão)
- 2 – STDERR (o erro padrão)
Os descritores de arquivos podem ser redirecionados para um arquivo, com o uso do símbolo >, ou ainda para outro descritor de arquivo, com o uso de >&.
Desta forma, temos três redirecionamentos ocorrendo no exemplo:
3>&1 – Cria um novo descritor de arquivos e o redireciona para a saída padrão (1)
1>&2 – Redireciona a saída padrão para o erro padrão (2)
2>&3 – Redireciona o erro padrão para o descritor criado, que agora irá redirecionar para a saída padrão.
Portanto, se nosso script escrever algo no descritor 2, os dados serão redirecionados para o descritor 1, e vice-versa. Alguns comandos escrevem informações no descritor STDERR, e com o uso desses redirecionamentos podemos encaminhar os dados para a saída padrão, de modo que o usuário possa visualizá-los.
Aqui temos um exemplo de uso em um script do shell: comando whiptail (veja o exemplo de número 6).
Você pode aprender mais sobre os redirecionamentos e os descritores de arquivos assistindo ao vídeo da Bóson Treinamentos a seguir:
Escreva um comentário