1
resposta

[Bug] ERRO DE SINTAXE

Pessoal, tudo bem?

Estou com uma dúvida grande nessa questão. O gabarito apontou a Alternativa A como correta, mas ela me parece ter um erro técnico.

A alternativa diz: Utilizando o comando grep "ERROR" nome_do_arquivo.log para filtrar as mensagens de erro nos logs e redirecionar o resultado para um arquivo separado com > .

O problema é o > . no final. O . (ponto) é um atalho para o diretório atual, e não um nome de arquivo. Se você tentar rodar grep "ERROR" arquivo.log > . no terminal, vai dar um erro (algo como "Is a directory"), porque não dá para redirecionar a saída para um diretório. O correto não seria > erros.txt ou algo assim?

Além disso, achei estranho a Alternativa D (tail -f ... | grep "ERROR") estar errada. A justificativa que apareceu para mim dizia que o tail não filtra, mas ela ignora totalmente o | grep "ERROR", que faz exatamente o filtro em tempo real. Para "monitorar logs", essa não seria a resposta mais usada no dia a dia?

1 resposta

Olá amigo.
Tudo bem?
A forma mais facil de verificar se é um erro ou não é replicando os comandos no seu terminal e analisando as saidas.
A alternativa mais correta e mais adequada ao problema descrito é:

  • Utilizando o comando grep "ERROR" nome_do_arquivo.log para filtrar as mensagens de erro nos logs e redirecionar o resultado para um arquivo separado com >.
    Por que essa alternativa é correta?
  • Você quer filtrar rapidamente mensagens de erro que contenham a palavra "ERROR" em maiúsculas.
  • O comando grep "ERROR" nome_do_arquivo.log faz exatamente isso: busca apenas as linhas que contêm a string "ERROR", ignorando o resto.
  • Ao adicionar > transacoes_erro.log, você salva o resultado em um novo arquivo, facilitando a análise posterior.
    Exemplo de comando final:
grep "ERROR" nome_do_arquivo.log > transacoes_erro.log

Por que as outras alternativas estão erradas ou incompletas?

  • find /var/log -name "*.log" | grep "ERROR"
    • Erro conceitual: Esse comando busca arquivos com extensão .log, mas depois aplica grep "ERROR" sobre os nomes dos arquivos, não sobre o conteúdo deles.
    • Resultado: Você está procurando "ERROR" nos nomes dos arquivos, não nas mensagens dentro deles.
  • Usando o comando grep ERROR
    • Incompleto: Está correto em essência, mas não informa sobre qual arquivo, nem sobre salvar a saída. Falta contexto e aplicação prática.
  • tail -f nome_do_arquivo.log
    • Serve para monitoramento em tempo real, mas não filtra automaticamente por "ERROR".
    • Para funcionar conforme descrito, teria que usar:
    tail -f nome_do_arquivo.log | grep "ERROR"
    
  • Não é o ideal se o objetivo for uma análise pontual de falhas anteriores, apenas útil para acompanhamento em tempo real.
  • grep -v "ERROR" nome_do_arquivo.log
    • Comando incorreto para o objetivo.
    • -v exclui as linhas com "ERROR", ou seja, você obteria tudo exceto os erros, que é o oposto do que se quer.
      A alternativa correta é:
  • Utilizando o comando grep "ERROR" nome_do_arquivo.log > transacoes_erro.log
    Porque:
  • Filtra exatamente o que você precisa.
  • Permite análise posterior com mais facilidade.
  • É simples, direto e funcional.
    Faça os testes ai e analise os resultados.
    Caso eu esteja errado me avise por favor.
    Bons estudos.
    Obrigado.