Pular para o conteúdo principal

Questão de Sistemas Operacionais — Geral — VUNESP 2024

Sistemas OperacionaisGeral
Código
vu212432
Banca
VUNESP
Órgão
EsFCEx
Ano
2024
Cargo
CFO/QC ( )
O seguinte comando do sistema operacional Linux   egrep ʹ^.{0,9}$ʹ /etc/passwd    tem por finalidade buscar no arquivo /etc/passwd linhas
  1. Aque contêm qualquer dígito decimal.
  2. Bque contêm os dígitos 0 ou 9.
  3. Cque possuem de 0 a 9 caracteres.
  4. Diniciadas pelos símbolos ^ (circunflexo) ou . (ponto) seguidas por um dígito decimal e terminadas com o símbolo $ (cifrão).
  5. Eque contêm os símbolos ^ (circunflexo), . (ponto) ou $ (cifrão) intercalados por um ou mais dígitos decimais.
Revelar gabarito e comentário

GabaritoC — que possuem de 0 a 9 caracteres.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Expressões regulares no Linux: egrep e quantificadores

Gabarito: letra C. O comando egrep '^.{0,9}$' /etc/passwd busca linhas que possuem de 0 a 9 caracteres, pois ^ ancora o início da linha, $ ancora o fim, . casa qualquer caractere (exceto quebra de linha) e {0,9} é o quantificador que repete o elemento anterior de 0 a 9 vezes. A alternativa C é a única que traduz corretamente essa expressão regular.

O egrep é uma variação do grep que interpreta padrões como expressões regulares estendidas (ERE). A diferença crucial entre o grep básico e o egrep está no conjunto de metacaracteres suportados: o egrep entende quantificadores como +, ?, {n,m} e alternância | sem necessidade de escape, enquanto o grep tradicional (BRE) exige barras invertidas para esses mesmos recursos. Na prática, o egrep é equivalente a grep -E, e é essa sintaxe estendida que permite escrever {0,9} diretamente.

Vamos decompor a expressão ^.{0,9}$ peça por peça. O circunflexo ^ é uma âncora que fixa o casamento ao início da linha — sem ele, o padrão poderia casar em qualquer posição do texto. O cifrão $ é a âncora de fim de linha. O ponto . é um metacaractere que casa com qualquer caractere único, com uma exceção importante: por padrão, não casa com quebra de linha. Os quantificadores {0,9} indicam que o elemento anterior (o ponto) deve aparecer entre 0 e 9 vezes. Juntando tudo: a linha inteira, do início ao fim, deve ser composta por no máximo 9 caracteres quaisquer — ou seja, linhas com 0 a 9 caracteres.

Um detalhe sutil: o quantificador {0,9} inclui o zero, o que significa que uma linha vazia também satisfaz o padrão. Isso é tecnicamente correto, embora no arquivo /etc/passwd dificilmente existam linhas vazias. O comando, portanto, listaria todas as linhas do arquivo que tenham comprimento entre 0 e 9 caracteres — um filtro por tamanho de linha, não por conteúdo.

A pegadinha clássica desta questão é confundir os metacaracteres de expressão regular com caracteres literais. O candidato desatento lê ^, . e $ como símbolos a serem buscados no texto, quando na verdade são operadores de ancoragem e coringa. A banca explora exatamente essa confusão nas alternativas D e E, que tratam os metacaracteres como se fossem caracteres comuns. Guarde a distinção: âncoras (^ e $) e coringa (.) são metacaracteres; para buscá-los como texto literal, seria necessário escapá-los com barra invertida (\^, \., \$).

  1. 1^ ancora início
  2. 2. casa qualquer caractere
  3. 3{0,9} repete 0 a 9 vezes
  4. 4$ ancora fim
  5. 5Linhas com 0 a 9 caracteres
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Afirma que o comando busca linhas que contêm qualquer dígito decimal. O padrão ^.{0,9}$ não menciona dígitos — o ponto casa com qualquer caractere, não apenas números. Para buscar dígitos, a expressão usaria [0-9] ou \d. A alternativa confunde o coringa universal . com uma classe de caracteres numéricos.

Alternativa B — ❌ Incorreta

Diz que o comando busca linhas que contêm os dígitos 0 ou 9. Essa leitura interpreta {0,9} como uma lista de caracteres, mas na verdade é um quantificador que indica repetição de 0 a 9 vezes do elemento anterior (o ponto). A alternativa confunde a sintaxe de quantificação com uma classe de caracteres [09].

Alternativa C — ✅ Correta ⟵ GABARITO

A expressão ^.{0,9}$ casa exatamente linhas com 0 a 9 caracteres: ^ ancora o início, $ ancora o fim, . casa qualquer caractere e {0,9} repete de 0 a 9 vezes. É a tradução literal e correta do padrão.

Alternativa D — ❌ Incorreta

Interpreta ^, . e $ como caracteres literais a serem buscados. Na verdade, são metacaracteres: ^ ancora o início da linha, $ ancora o fim e . é coringa para qualquer caractere. Para buscar esses símbolos como texto, seria necessário escapá-los (\^, \., \$). A alternativa ignora completamente a função de metacaractere.

Alternativa E — ❌ Incorreta

Também trata ^, . e $ como caracteres literais, além de inventar a exigência de dígitos decimais intercalados. O padrão não contém nenhuma classe de dígitos e os símbolos são operadores, não caracteres a buscar. A alternativa é duplamente errada: pela leitura literal dos metacaracteres e pela introdução de dígitos que não existem na expressão.

NÃO CAIA NESSA!

A banca explora a confusão entre metacaracteres e caracteres literais. Nas alternativas D e E, ^, . e $ são tratados como símbolos a buscar, quando na verdade são âncoras e coringa. Lembre-se: em expressões regulares, ^ e $ nunca aparecem como texto — eles marcam posição. Para buscar um circunflexo literal, você escreveria \^.

PEGA ESSA DICA!

Decore os três papéis: ^ = início de linha, $ = fim de linha, . = qualquer caractere. E o quantificador {n,m} sempre se refere ao elemento anterior. Na prova, decomponha a expressão da direita para a esquerda: primeiro o que casa (o ponto), depois quantas vezes ({0,9}), e só então as âncoras.

Gabarito: letra C

Link permanente: /questoes/vu212432