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)

Descritores de arquivos no Linux

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:

 

Sobre Fábio dos Reis (1250 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*