有这样的命令:
maldet -b --scan-all /home?/?/public_?
我不清楚为什么我们需要问号,尤其是两条路径之间的单个问号,所以我做了man maldet
并阅读:
-a, --扫描所有路径
扫描路径中的所有文件(默认:/home,通配符:?)例如:maldet -a /home/?/public_html
我的问题:
为什么我们需要?
在/home?
和之间添加一个额外的值public_?
?
/home?
这个问题的另一个版本可能是,“如果和的组合意味着,“找到underpublic_?
的所有实例,为什么我们需要它们之间的额外值?”。public_
/home
?
答案1
我无法追踪scan
maldet 最终调用的命令的来源,但 maldet 将给定的路径逐字传递给该scan
命令,因此我的假设是进一步将这些路径处理?
为通配符本身。
该示例中通配符的假定目标是收集以下路径:
/home/user1/public_html
/home/user2/public_ftp
但不是:
/home/public_html
...换句话说,要求在/home
and/public_html
或之间存在路径元素/public_anything
。
不过,请确保转义或引用命令的通配符路径maldet
,因为如果您有任何以下形式的路径:,例如:/home/(single-character)/public_(single-character)
/home/a/public_a
那么您的 shell 将扩展到该(或任何匹配的)路径,而不是将其传递?
给 maldet 通配符代码。只要不存在单字符路径,您可能会错误地使用那些未加引号的路径获得“幸运”,因为如果没有匹配的路径(由 shell 看到),它会将?
包含 - 的字符串传递给 maldet 命令。一旦存在任何匹配的路径,shell 将扩展?
到这些路径,并且 maldet 将不再看到(您的)通配符。