1
resposta

[Dúvida] Exercício

A explicação da letra B informa que o terminal irá retornar o 'arq30' o que eu concordo e foi o que entendi com base no que o professor explicou na aula. Pois com base na lista: arq01, arq02, arq03, arq04, arq05, arq10, arq20, arq30, arq40, arq50 o comando: ls arq*3?

Deveria retornar 'arq30' pois a expressão busca por um arquivo com qualquer sequência de caractere que comece com 'arq' inclusive 'nada', seguido do número '3' e que após o '3' haja mais um caractere. Então a resposta seria 'arq30' como sugere o exercício. Contudo o terminal retorna 'arq03'. Até o momento não conseguir entender o motivo. Podem ajudar?

1 resposta

Olá Iuri!

Entendo sua dúvida com o comando ls arq*3? e por que ele retorna 'arq03' ao invés de 'arq30'. Vou tentar te ajudar com base no que eu entendi.

O caractere ? em comandos do terminal, quando utilizado como coringa, representa exatamente um caractere qualquer. Então, quando você usa ls arq*3?, o terminal busca por arquivos que começam com "arq", seguidos por qualquer sequência de caracteres (incluindo nenhuma), depois o número '3', e obrigatoriamente mais um caractere após o '3'.

No seu diretório, o arquivo 'arq03' se encaixa nesse padrão porque:

  • "arq" é o início do nome.
  • "03" possui o '3' seguido imediatamente por outro caractere, que é '3'.

Por outro lado, 'arq30' não é listado porque:

  • "arq" é o início do nome.
  • "30" possui o '3', mas não há um caractere adicional após o '0' para satisfazer o ?.

Portanto, o comando que realmente capturaria 'arq30' como você esperava seria ls arq*3*, que permite qualquer quantidade de caracteres (ou nenhum) após o '3', incluindo o caso onde não há mais caracteres, como em 'arq30'.

Espero que essa explicação tenha esclarecido a situação! Qualquer dúvida manda aqui de novo. Bons estudos!