回答:
より正確に--
は、bash組み込みコマンドおよび他の多くのコマンドで二重ダッシュ()を使用して、コマンドオプションの終わりを示し、その後は位置パラメーターのみが受け入れられます。
使用例:文字列のファイルをgrepしたい場合-v
-通常-v
、一致する意味を逆にするオプションと見なされます(一致しない行のみを表示し--
ます)が、次の-v
ような文字列をgrepできます:
grep -- -v file
--
で正規表現からオプションを分離するように機能しますgrep
が、標準的な方法は-e
/ を使用すること--regexp
です。
--
、の後に収まる可能性がありますが、上記の例grep -e -v file
は(非常に紛らわしいですが)と書くこともできます。
ではman bash
私たちが読むことができるシェルの組み込みコマンドセクション:
特に断りのない限り、このセクションで説明されている各組み込みコマンドは、オプションの終わりを示す
-
accepts--
が先行するオプションを受け入れるものとして記載されています。
:
、true
、false
、およびtest
組み込みコマンドは、オプションを受け入れないと扱わない--
特別な。exit
、logout
、break
、continue
、let
、およびshift
組み込みコマンドで始まる引数を受け入れて処理-
要求せず--
。引数を受け入れるが、オプションの受け入れとして指定されていないその他の組み込み関数は-
、無効なオプションとして始まる引数を--
解釈し、この解釈を防ぐ必要があります。オプションの終わりを意味すると
echo
解釈しないことに注意してください--
。
man bash
(次回のメモ:)。
POSIX.1-2017
12.2ユーティリティ構文のガイドライン
ガイドライン10:
--
オプション引数ではない最初の引数は、オプションの終わりを示す区切り文字として受け入れられるべきです。次の引数は、 '-
'文字で始まる場合でもオペランドとして扱われる必要があります。
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
set
絶対に必要なBash ビルトインです。