npm run とかで使うハイフン2つ「--」の意味
npm-run-scripts を使っていると、npm run something
コマンドにオプション引数を渡したくて、$ npm run something -- --include=hoge
みたいに書いたりする。
他にも、ハイフンから始まるファイルを指定するときに、$ rm -- -some.txt
などと書いたりする。
このハイフン2つ --
って何? というのを調べてみた。
どうやらコレは Double Dash ダブル・ダッシュと呼ばれており、UNIX におけるコマンドフラグの終わりを示す記号とのこと。オプションのスキャンを強制的に終了させる記号のようだ。
- 参考 : 引数"--"(Double dash)のみとは何を意味するのか
- 参考 : Man page of GETOPT
-
"--" は特殊な引き数で、スキャンのモードによらず、 オプションのスキャンを強制的に終了させる。
-
- 参考 : Linux — ハイフンで始まるファイルを削除する
- 参考 : UNIX - BASH - What does "--" (double-dash) mean? (also known as "bare double dash")-Learn in 30 Sec from Microsoft Awarded MVP
-
The double dash "–" means "end of command line flags" i.e. it tells the preceding command not to try to parse what comes after command line options.
-
It is actually part of the POSIX standard that — can be used to separate options from other arguments, so you will see it on commands like cp and mv (which are not part of Bash). — works to separate options from regular expressions in grep, but the canonical way is to use -e/–regexp
-
- 参考 : shell - What does "--" (double-dash) mean? (also known as "bare double dash") - Unix & Linux Stack Exchange
ついでに、こんなのも見つけた。
A single hyphen can be followed by multiple single-character flags. A double hyphen prefixes a single, multicharacter option.
ハイフン1つ (シングル・ダッシュ) の場合、1文字で示すオプションが多く、それらをまとめて記述できる。例えば $ tar -czf
などは、c
・z
・f
という3つのオプションをまとめて渡せる。
コレに対し、ハイフン2つ (ダブル・ダッシュ) の場合はほぼ必ず文字列で示すオプションになる。$ tar --exclude
のように、だ。
npm-scripts の場合は、npm run --help
のように npm run
コマンドへのオプション指定なのか、npm run
以降に示した npm-scripts へのオプション指定なのかの区別が付かないので、このダブル・ダッシュが必要なようだ。