Olá Rafael, tudo bem com você?
No primeiro comando: cat listagem.txt | sort > listagem.txt
, o redirecionamento através do símbolo de >
(maior) sobrescreve o conteúdo do arquivo listagem.txt
com a saída do comando sort
. Por isso, o conteúdo original é perdido.
No segundo comando: tail -n 5 syslog | grep systemd > /labs/redirecionamento/log5.txt
, o redirecionamento através do símbolo de >
(maior) cria um novo arquivo chamado log5.txt
no diretório ~/labs/redirecionamento/
e redireciona a saída do comando sort
para esse novo arquivo. Nesse caso, como o arquivo log5.txt
não existia previamente, o comando cria um novo arquivo com o resultado da ordenação.
Portanto, o problema de sobrescrita ocorre no primeiro exemplo porque o arquivo de destino é o mesmo arquivo de origem, enquanto no segundo exemplo, o arquivo de destino é um arquivo novo criado durante a execução do comando.
Vale ressaltar, que como o instrutor ressaltou em aula, o redirecionamento com o sinal de maior (>
) sempre sobrescreve o conteúdo do arquivo, enquanto o redirecionamento com o sinal de maior maior (>>
) adiciona a saída ao final do arquivo, temos que usar estes sinais com sabedoria para não sobrescrevermos e perdemos informações importantes no dia a dia.
Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.
Em caso de dúvidas estou à disposição.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!