maldetスキャンコマンドの1つの疑問符について

maldetスキャンコマンドの1つの疑問符について

このコマンドがあります:

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 は (ユーザーの) ワイルドカードを認識しなくなります。

関連情報