![關於 maldet 掃描命令中的單一問號](https://rvso.com/image/109255/%E9%97%9C%E6%96%BC%20maldet%20%E6%8E%83%E6%8F%8F%E5%91%BD%E4%BB%A4%E4%B8%AD%E7%9A%84%E5%96%AE%E4%B8%80%E5%95%8F%E8%99%9F.png)
有這樣的命令:
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 將不再看到(您的)通配符。