How can I grep for a string that begins with a dash/hyphen?

ありがちな話をふたつ。

時々しか必要にならないので5秒ほど悩むヤツ:

1 me@host: ~$ grep '--- Type declarations ---' *.py
2 grep: unrecognized option `--- Type declarations ---'
3 Usage: grep [OPTION]... PATTERN [FILE]...
4 Try `grep --help' for more information.

これ、「–help」しても助けにならんのが初心者泣かせよね。こうね:

1 me@host: ~$ grep -- '--- Type declarations ---' *.py

もうひとつは DomestosWindows 限定。

1 c:\do\me\s\tos> grep '<' *.py
2 指定されたファイルが見つかりません

これ、emacs の Windows 版を、cmdproxy のまま使ってたり、MSYS にパスは通しているけれども cmd.exe プロンプトから bash も起動せずに grep.exe を起動したりすればこうなる。

emacs を「ちゃんと」設定するのが筋(MSYS bashに向ける)だったりするし、MSYS のパス通してるなら、なんでわざわざ DOS のまま使うんだコラ、というのはひとまず置いといて。こうね:

1 c:\do\me\s\tos> sh -c "grep '<' *.c *.py"