ただ奇妙なシナリオに直面しました。これが機能であるかどうかはわかりません。そうでない場合は、どのようなセキュリティリスクを示しますか? grepは何も得られないかもしれませんが、他のディレクトリクロールユーティリティを使用することはできますか?
再現する方法は次のとおりです。
touch ./-vR
grep hi *
返されない項目はすべてhi
再帰的に返されます。
ベストアンサー1
getopt
これはGNU(GNUツールのオプション解析)の既知のバグです。
grep hi -vR
hi
-vR
POSIXでは、以前はオプションではなく引数として認識されていなかった多くのオプションをoptionsというファイルで見つける必要があります(hi
以下を参照)。
ほとんどのGNUツール、デフォルトモード、またはGNU APIで使用されるツールは、環境を除いてgetopt
それらを尊重しません。POSIXLY_CORRECT
したがって、以下が必要です。
POSIXLY_CORRECT=1 grep hi *
(grep
POSIX互換方式で強制動作)または
grep -- hi *
(オプションの終わりを明確に表示--
)
grep hi ./*
(すべてのファイル名はで始まる必要があるため、./
そうではありません-
。)
とにかく、次のようにしてください:
grep -e hi -vR
これはオプションではなく引数ではなくオプションの引数であるgrep
ため、GNUと非GNUの問題があるため、次のものが必要です。hi
-e
grep -e hi -- *
または(より良い理由は、名前付きファイルの問題も解決するためです-
):
grep -e hi ./*
(POSIXLY_CORRECTは役に立ちません)。