關於 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 將不再看到(您的)通配符。

相關內容