Bash拡張子が「-」で始まるファイルを引数として渡すのを防ぐ方法は?

Bash拡張子が「-」で始まるファイルを引数として渡すのを防ぐ方法は?

文字列を再帰的に検索しようとしていますが、次grepの結果が表示されます。

$ grep -r "stuff" *
grep: unrecognized option '---corporate-discount.csv'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.

-Bashがパラメータで始まるファイルを渡すのを防ぐ方法は何ですか?

ベストアンサー1

まず、ダッシュで始まるパラメータの解釈は、実行中のプログラムgrepや他のプログラムによって異なります。シェルにはこれを制御する直接的な方法はありません。

ほとんどのプログラムと同様に、これらのファイルを(完全に無視せずに)処理しようとしていると仮定すると、これはオプションの終わりを示すとgrep認識されます。--

grep -r -e "stuff" -- *

やりたいことをします。そこの場合も-eastuffで始まります。-

または、次のものを使用できます。

grep -r -e "stuff"  ./*

-後者は、呼び出される現在のディレクトリにファイルがある場合にも問題を回避します。--区切り文字の後にもstdinとgrep解釈されますが、-現在のディレクトリから./-呼び出されるファイルです。-

おすすめ記事