web-dev-qa-db-ja.com

「-」(ダブルダッシュ)はどういう意味ですか?

compgenコマンドで--が使用されているのを見ました。

例えば:

compgen -W "foo bar baz" -- b

そこの--の意味は何ですか?

518
dogbane

より正確には、ほとんどのbash組み込みコマンドおよび他の多くのコマンドでダブルダッシュ(--)を使用してコマンドオプションの終わりを示し、その後に位置パラメーターのみが受け入れられます。

使用例:ファイルに文字列-vをgrepしたいとします。通常、-vは、一致する意味を逆にするオプションと見なされます(一致しない行のみを表示)が、--次のように、文字列-vをgrepできます。

grep -- -v file
631
Guss

man bashでは、Shell Builtin Commandsセクションで読み取ることができます:

特に明記されていない限り、-が前に付いたオプションを受け入れるものとしてこのセクションに記載されている各組み込みコマンドは、--オプションの終わりを示すを受け入れます。

:truefalse、およびtestビルトインはオプションを受け入れず、--を特別に扱いません。 exitlogoutbreakcontinuelet、およびshiftビルトインは、次で始まる引数を受け入れて処理します-を必要とせずに--。引数を受け入れるがオプションを受け入れるように指定されていない他の組み込み関数は、-で始まる引数を無効なオプションとして解釈し、この解釈を防ぐために--が必要です。

echoは、オプションの終わりを意味する--を解釈しないことに注意してください。

48
kenorb

これは、パラメーター(オプション)リストの終わりを示します。

47
polemon

POSIX.1-2017

12.2ユーティリティ構文ガイドライン

ガイドライン10:

オプション引数ではない最初の--引数は、オプションの終わりを示す区切り文字として受け入れる必要があります。以降の引数は、 '-'文字で始まっていても、オペランドとして扱う必要があります。

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02

18
John Doe