僕は、このコマンドを見て、どういう構造になっているかよくわかりませんでした。
$ hoge -v -lv foo -- -l bar
普段、何気なく使っているCLIコマンドですが -- などが出てくると、よくわからなくなってしまう時があります・・・。
なので、コマンドを整理してみましょう。
argument (引数)
引数はコマンド名を含めた、コマンドラインに与えられた文字列全体の配列です。
配列の最初にあるのが、コマンド名ということですね。
コマンドラインに与えられたコマンド名もオプションも、パラメータも全て、引数に含まれます。
$ ls -la /tmp /var/tmp
arg0 = ls
arg1 = -la
arg2 = /tmp
arg3 = /var/tmp
option (オプション)
オプションは コマンドの挙動を変えるために与えられるものですね。
-h のようなものは short と呼ばれ
--help のようなものは long と呼ばれます。
$ ls -la --help /tmp /var/tmp
option1 = -l
option2 = -a
option3 = --help
parameter (パラメータ)
パラメータはコマンド、もしくはオプションに情報を与えるものです。
例えば、-o fileの場合 file は -oオプションにとってのパラメータです。
また、cat hoge.txt の場合は hoge.txt は cat のパラメータですね。
そして、曲者の--ダブルダッシュですが
これはオプションのように解釈されてしまうパラメータを渡すために使われます。
--で区切った後の引数はオプションではなく、パラメータとして扱われます。
$ ls -l -- -a
option1 = -l
parameter1 = -a
参考
↧