Em relação a um único ponto de interrogação no comando de varredura maldet

Em relação a um único ponto de interrogação no comando de varredura maldet

Existe este comando:

maldet -b --scan-all /home?/?/public_?

Não ficou claro para mim por que precisamos dos pontos de interrogação, especialmente aquele entre os dois caminhos. Então fiz man maldete li:

-a, --scan-all CAMINHO

Verifica todos os arquivos no caminho (padrão: /home, curinga:?), por exemplo: maldet -a /home/?/public_html

Minha pergunta:

Por que precisamos de um extra ?entre /home?e public_??

Uma versão alternativa desta questão poderia ser, "se a combinação de /home?e public_?significa" encontrar todas as instâncias de public_under /home, por que precisamos do extra ?entre elas?

Responder1

Não consegui rastrear a origem do scancomando que maldet eventualmente chama, mas maldet passa o caminho fornecido literalmente para esse scancomando, então minha suposição é que algo mais adiante os processa ?como curingas.

O objetivo presumido dos curingas nesse exemplo é reunir caminhos como:

  • /home/user1/public_html
  • /home/user2/public_ftp

mas não:

  • /home/public_html

... em outras palavras, exigir que exista um elemento de caminho entre /homee /public_htmlou /public_anything.

No entanto , certifique-se de escapar ou citar esses caminhos curinga para o maldetcomando, porque se você tiver algum caminho no formato: , como:/home/(single-character)/public_(single-character)

  • /home/a/public_a

então seu shell se expandirá para esse (ou qualquer um desses caminhos correspondentes), em vez de passar ?para o código curinga maldet. Você pode erroneamente ter "sorte" usando esses caminhos sem aspas, desde que não existam caminhos de um único caractere, porque se não houver caminhos correspondentes (vistos pelo shell), ele passará a ?string contendo - junto com o comando maldet . Assim que existirem caminhos correspondentes, o shell expandirá o ?para esses caminhos e maldet não verá mais (seus) curingas.

informação relacionada