A respeito de um único ponto de interrogação no comando maldet scanning

0

Existe este comando:

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

Não ficou claro para mim por que precisamos dos pontos de interrogação, especialmente o único entre os dois caminhos. Então, eu fiz man maldet e li:

-a, --scan-all PATH

Scan all files in path (default: /home, wildcard: ?) e.g: maldet -a /home/?/public_html

Minha pergunta:

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

Uma versão alternativa desta pergunta poderia ser "se a combinação de /home? e public_? significa" localizar todas as instâncias de public_ em /home , por que precisamos do ? extra entre eles? ".

    
por JohnDoea 08.04.2017 / 21:13

1 resposta

1

Eu não consegui rastrear a origem do comando scan que a maldet eventualmente chama, mas a maldet passa o caminho dado literalmente para esse comando scan , então minha suposição é que algo mais adiante processe os ? como curingas em si.

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, para exigir que um elemento de caminho exista entre /home e /public_html ou /public_anything .

Certifique-se de escapar ou citar aqueles caminhos curinga para o comando maldet , porque, se você tiver algum caminho no formulário: /home/(single-character)/public_(single-character) , como:

  • /home/a/public_a

então seu shell expandirá para esse (ou qualquer um desses caminhos correspondentes), em vez de passar o ? para o código curet da maldet. Você poderia erroneamente ter "sorte" usando esses caminhos não citados, desde que não existam caminhos de um único caractere, porque se não houver caminhos correspondentes (vistos pelo shell), ele passará a string ? -containing para o comando maldet. Quando existirem caminhos correspondentes, o shell expandirá o ? para esses caminhos, e a maldet não verá mais os curingas (seus).

    
por 09.04.2017 / 14:17

Tags