バグや機能? Grepはファイルをフラグとして受け入れます。

バグや機能? Grepはファイルをフラグとして受け入れます。

ただ奇妙なシナリオに直面しました。これが機能であるかどうかはわかりません。そうでない場合は、どのようなセキュリティリスクを示しますか? grepは何も得られないかもしれませんが、他のディレクトリクロールユーティリティを使用することはできますか?

再現する方法は次のとおりです。

  • touch ./-vR
  • grep hi *

返されない項目はすべてhi再帰的に返されます。

ベストアンサー1

getoptこれはGNU(GNUツールのオプション解析)の既知のバグです。

grep hi -vR

hi-vRPOSIXでは、以前はオプションではなく引数として認識されていなかった多くのオプションをoptionsというファイルで見つける必要があります(hi以下を参照)。

ほとんどのGNUツール、デフォルトモード、またはGNU APIで使用されるツールは、環境を除いてgetoptそれらを尊重しません。POSIXLY_CORRECT

したがって、以下が必要です。

POSIXLY_CORRECT=1 grep hi *

grepPOSIX互換方式で強制動作)または

grep -- hi *

(オプションの終わりを明確に表示--

grep hi ./*

(すべてのファイル名はで始まる必要があるため、./そうではありません-。)

とにかく、次のようにしてください:

grep -e hi -vR

これはオプションではなく引数ではなくオプションの引数であるgrepため、GNUと非GNUの問題があるため、次のものが必要です。hi-e

grep -e hi -- *

または(より良い理由は、名前付きファイルの問題も解決するためです-):

grep -e hi ./*

(POSIXLY_CORRECTは役に立ちません)。

おすすめ記事