关于 maldet 扫描命令中的单个问号

关于 maldet 扫描命令中的单个问号

有这样的命令:

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

我不清楚为什么我们需要问号,尤其是两条路径之间的单个问号,所以我做了man maldet并阅读:

-a, --扫描所有路径

扫描路径中的所有文件(默认:/home,通配符:?)例如:maldet -a /home/?/public_html

我的问题:

为什么我们需要?/home?和之间添加一个额外的值public_?

/home?这个问题的另一个版本可能是,“如果和的组合意味着,“找到underpublic_?的所有实例,为什么我们需要它们之间的额外值?”。public_/home?

答案1

我无法追踪scanmaldet 最终调用的命令的来源,但 maldet 将给定的路径逐字传递给该scan命令,因此我的假设是进一步将这些路径处理?为通配符本身。

该示例中通配符的假定目标是收集以下路径:

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

但不是:

  • /home/public_html

...换句话说,要求在/homeand/public_html或之间存在路径元素/public_anything

不过,请确保转义或引用命令的通配符路径maldet,因为如果您有任何以下形式的路径:,例如:/home/(single-character)/public_(single-character)

  • /home/a/public_a

那么您的 shell 将扩展到该(或任何匹配的)路径,而不是将其传递?给 maldet 通配符代码。只要不存在单字符路径,您可能会错误地使用那些未加引号的路径获得“幸运”,因为如果没有匹配的路径(由 shell 看到),它会将?包含 - 的字符串传递给 maldet 命令。一旦存在任何匹配的路径,shell 将扩展?到这些路径,并且 maldet 将不再看到(您的)通配符。

相关内容