
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 maldet
y 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 scan
comando que maldet finalmente llama, pero maldet pasa la ruta dada palabra por palabra a ese scan
comando, 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 /home
y /public_html
o /public_anything
.
Sin embargo , asegúrese de utilizar caracteres de escape o comillas para esas rutas comodín al maldet
comando, 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.