Gostaria de entender o motivo do 2> para criar o arquivo erros.txt .... Não ficou muito claro na aula.
Gostaria de entender o motivo do 2> para criar o arquivo erros.txt .... Não ficou muito claro na aula.
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:
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 arquivoerros.txt."
Um pequeno comparativo visual:
| Comando | O que acontece? |
|---|---|
comando > log.txt | Guarda apenas o resultado de sucesso no arquivo. O erro vaza para a tela. |
comando 2> erros.txt | Guarda apenas o erro no arquivo. O sucesso continua saindo na tela. |
comando > log.txt 2> erros.txt | Separa tudo: sucesso vai para um arquivo, erro vai para outro. |
Espero ter ter ajudado.