Respecto a un único signo de interrogación en el comando de escaneo maldet

Respecto a un único signo de interrogación en el comando de escaneo maldet

Existe este comando:

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

No me quedó claro por qué necesitamos los signos de interrogación, especialmente el único entre los dos caminos, así que lo hice man maldety leí:

-a, --scan-all RUTA

Escanee todos los archivos en la ruta (predeterminada: /home, comodín: ?), por ejemplo: maldet -a /home/?/public_html

Mi pregunta:

¿Por qué necesitamos un extra ?entre /home?y public_??

Una versión alternativa de esta pregunta podría ser, "si la combinación de /home?y public_?significa" encontrar todas las instancias de public_debajo /home, ¿por qué necesitamos el extra ?entre ellas?

Respuesta1

No pude rastrear la fuente del scancomando que maldet finalmente llama, pero maldet pasa la ruta dada palabra por palabra a ese scancomando, por lo que supongo que algo más adelante los procesa ?como comodines.

El supuesto objetivo de los comodines en ese ejemplo es reunir rutas como:

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

pero no:

  • /home/public_html

... en otras palabras, requerir que exista un elemento de ruta entre /homey /public_htmlo /public_anything.

Sin embargo , asegúrese de utilizar caracteres de escape o comillas para esas rutas comodín al maldetcomando, porque si tiene rutas del formato: , como por ejemplo:/home/(single-character)/public_(single-character)

  • /home/a/public_a

entonces su shell se expandirá a esa ruta (o cualquiera de las que coincidan), en lugar de pasar el ?código comodín maldet. Podrías tener "suerte" por error al usar esas rutas sin comillas, siempre y cuando no existan rutas de un solo carácter, porque si no hay rutas coincidentes (vistas por el shell), pasará la ?cadena que contiene -al comando maldet. . Una vez que existan rutas coincidentes, el shell se expandirá ?a esas rutas y maldet ya no verá (sus) comodines.

información relacionada