Questão de Sistemas Operacionais — Geral — VUNESP 2023
- Código
- vu197495
- Banca
- VUNESP
- Órgão
- CIJUN
- Ano
- 2023
- Cargo
- Arqt ( )
- Als | grep –c *.sh
- Bls | grep –f *.sh
- Cls | grep –O *.sh
- Dls | grep –E *.sh
- Els | grep –q *.sh
GabaritoD — ls | grep –E *.sh
Gabarito: letra D. O comando ls | grep -E *.sh utiliza a opção -E do grep, que habilita o uso de expressões regulares estendidas (ERE), permitindo que o padrão *.sh seja interpretado corretamente para encontrar arquivos com extensão .sh. As demais opções (-c, -f, -O, -q) não são adequadas para essa finalidade, pois cada uma tem um propósito específico no grep.
O grep é um utilitário de linha de comando do Linux usado para buscar texto em arquivos ou na saída de outros comandos. Ele trabalha com padrões, que podem ser expressões regulares básicas (BRE) ou estendidas (ERE). A opção -E (ou --extended-regexp) é a que permite usar expressões regulares estendidas, que incluem metacaracteres como *, +, ?, {, }, (, ), | sem a necessidade de escape. No comando ls | grep -E *.sh, o ls lista os arquivos do diretório, e o grep -E filtra essa lista, procurando por nomes que correspondam ao padrão *.sh. O * na expressão regular estendida significa "zero ou mais ocorrências do caractere anterior", então *.sh casa com qualquer nome que termine com .sh (na verdade, o padrão correto seria .*\.sh$, mas a banca considerou *.sh como suficiente para a intenção).
Na prática, o comando ls | grep -E '.*\.sh$' é mais preciso, mas a alternativa D é a que apresenta a opção correta do grep para trabalhar com expressões regulares. As outras opções têm funções distintas: -c conta o número de linhas que correspondem ao padrão, -f lê padrões de um arquivo, -O não é uma opção válida do grep (é usada em outros contextos, como no gcc), e -q suprime a saída, retornando apenas o código de status. Nenhuma delas é adequada para buscar arquivos com extensão .sh usando expressões regulares.
A pegadinha desta questão está em confundir as opções do grep. O candidato pode lembrar que -E é para expressões regulares estendidas, mas pode se confundir com -c (contagem), -f (arquivo de padrões) ou -q (modo silencioso). A banca explora exatamente essa confusão, oferecendo opções que são válidas no grep, mas com propósitos diferentes. Para acertar, é essencial conhecer as principais opções do grep e saber qual delas habilita expressões regulares estendidas.
A opção -c do grep é usada para contar o número de linhas que correspondem ao padrão, não para buscar arquivos com expressões regulares. O comando ls | grep -c *.sh contaria quantas linhas da saída do ls correspondem ao padrão *.sh, mas não listaria os arquivos. Além disso, o * em expressões regulares básicas (sem -E) tem um significado diferente, o que torna o comando ainda menos adequado.
A opção -f do grep é usada para ler padrões de um arquivo, não para habilitar expressões regulares. O comando ls | grep -f *.sh tentaria usar o arquivo *.sh como fonte de padrões, o que não faz sentido no contexto de listar arquivos com extensão .sh. Essa opção é útil quando se tem um arquivo com vários padrões para buscar, mas não é o caso aqui.
A opção -O não é uma opção válida do grep. Ela é usada em outros comandos, como no gcc para otimização, mas não no grep. Portanto, o comando ls | grep -O *.sh resultaria em erro, pois o grep não reconhece essa opção.
A opção -E do grep habilita o uso de expressões regulares estendidas (ERE), que permitem o uso de metacaracteres como *, +, ?, {, }, (, ), | sem a necessidade de escape. O comando ls | grep -E *.sh lista os arquivos do diretório e filtra aqueles que correspondem ao padrão *.sh, encontrando assim os arquivos com extensão .sh. Essa é a opção correta para buscar arquivos usando expressões regulares.
A opção -q do grep é usada para o modo silencioso, que suprime a saída e retorna apenas o código de status (0 se encontrou correspondência, 1 se não encontrou). O comando ls | grep -q *.sh não exibiria os arquivos encontrados, apenas indicaria se houve ou não correspondência. Portanto, não é adequado para listar arquivos com extensão .sh.
Gabarito: letra D
Link permanente: /questoes/vu197495