Wildcards

關於maldet掃描命令中的單個問號

  • June 30, 2018

有這個命令:

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

我不清楚為什麼我們需要問號,尤其是兩條路徑之間的單個問號,所以我做了man maldet並閱讀:

-a, –scan-all 路徑

掃描路徑中的所有文件(預設:/home,萬用字元:?) 例如:maldet -a /home/?/public_html

我的問題:

為什麼我們需要一個額外的?between /home?and public_?

這個問題的另一個版本可能是,“如果 和 的組合/home?意味著,“找到underpublic_?的所有實例,為什麼我們需要它們之間的額外?public_``/home``?

我無法追踪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 將不再看到(您的)萬用字元。

引用自:https://unix.stackexchange.com/questions/357821