1
resposta

[Dúvida] [DÚVIDA]

Gostaria de entender o motivo do 2> para criar o arquivo erros.txt .... Não ficou muito claro na aula.

1 resposta

Oii, Matheus! Tudo bem?

Essa é uma excelente dúvida! A sintaxe de comandos no terminal pode parecer um pouco "mágica" no início, mas existe uma lógica bem organizada por trás desses números.

Vou te explicar o que esse 2> significa e por que ele é essencial para tratar erros.

O conceito de "Canais" (Streams)

Para o Windows (e Linux também), todo programa que roda no terminal tem três "canais" de comunicação padrão. Cada canal tem um número de identificação:

  • 0 (STDIN): É a entrada padrão (o que você digita).
  • 1 (STDOUT): É a saída padrão (o resultado de sucesso que aparece na tela).
  • 2 (STDERR): É a saída de erro (mensagens de falha que aparecem na tela).

Por que usamos o número 2?

Quando usamos o sinal de maior > sozinho (exemplo: comando > arquivo.txt), o terminal entende implicitamente que queremos redirecionar o canal 1 (o sucesso).

Porém, o comando tar que você viu na aula gera uma mensagem de erro. Mensagens de erro não trafegam pelo canal 1, elas trafegam pelo canal 2.

Se você não especificar o número 2, o terminal vai tentar salvar o "sucesso" no arquivo (que será vazio, pois deu erro) e vai continuar jogando o texto do erro na sua tela.

Resumindo a sintaxe 2> erros.txt:

Ao digitar 2>, você está dando a seguinte ordem ao computador:

"Eu quero que você pegue tudo o que vier pelo canal 2 (erros) e, em vez de mostrar na tela, redirecione (>) para dentro do arquivo erros.txt."

Um pequeno comparativo visual:

ComandoO que acontece?
comando > log.txtGuarda apenas o resultado de sucesso no arquivo. O erro vaza para a tela.
comando 2> erros.txtGuarda apenas o erro no arquivo. O sucesso continua saindo na tela.
comando > log.txt 2> erros.txtSepara tudo: sucesso vai para um arquivo, erro vai para outro.

Espero ter ter ajudado.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!