![maldetスキャンコマンドの1つの疑問符について](https://rvso.com/image/109255/maldet%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE1%E3%81%A4%E3%81%AE%E7%96%91%E5%95%8F%E7%AC%A6%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6.png)
このコマンドがあります:
maldet -b --scan-all /home?/?/public_?
疑問符、特に 2 つのパスの間にある 1 つの疑問符がなぜ必要なのか私には分かりませんでした。そこで、疑問符を付けてman maldet
読みました。
-a, --scan-all パス
パス内のすべてのファイルをスキャンします (デフォルト: /home、ワイルドカード: ?) 例: maldet -a /home/?/public_html
私の質問:
と?
の間に余分なものが必要なのはなぜですか?/home?
public_?
/home?
この質問の別のバージョンは、「との組み合わせが「の下でpublic_?
の のすべてのインスタンスを検索する」ことを意味する場合、それらの間の余分な が必要なのはなぜですか?」となります。public_
/home
?
答え1
maldet が最終的に呼び出すコマンドのソースを追跡することはできませんでしたscan
が、maldet は指定されたパスをそのscan
コマンドにそのまま渡すので、その後の何かがそれらをワイルドカードとして処理しているのではないかと推測しています?
。
この例のワイルドカードの想定される目的は、次のようなパスを収集することです。
/home/user1/public_html
/home/user2/public_ftp
だがしかし:
/home/public_html
つまり、/home
と/public_html
またはの間にパス要素が存在することを要求します/public_anything
。
ただし、次のようなmaldet
形式のパスがある場合は、コマンドへのワイルドカード パスをエスケープするか引用符で囲むようにしてください。/home/(single-character)/public_(single-character)
/home/a/public_a
すると、シェルは を maldet ワイルドカード コードに渡す代わりに、そのパス (または一致するパスのいずれか) に展開します?
。 単一文字のパスが存在しない限り、引用符なしでそれらのパスを使用すると、誤って「幸運」になる可能性があります。なぜなら、一致するパス (シェルによって認識される) がない場合、シェルは -?
を含む文字列を maldet コマンドに渡すからです。 一致するパスが存在すると、シェルは を?
それらのパスに展開し、maldet は (ユーザーの) ワイルドカードを認識しなくなります。