これは正しい方法- パラメータと型パラメータをスペースで区切っていますか?
そして主張を分離する必要がありますか、それとも一緒に保つべきですか?
例:
<command> -D 192.168.0.100 -p 80
<command> -cvvfz
または:
<command> -D192.168.0.100 -p80
<command> -c -vv -f -z
一部のプログラムは1つの「スタイル」のみを許可しますか、それともまったく重要ですか?一般的に言えば?
答え1
一部のプログラムする1つのスタイルのみを許可します。どちらかです。
使用されるすべての項目は、パラメータ付きのオプションを受け入れるgetopt()
必要があり-xfoo
ます。しかし、すべてのプログラムが。-x foo
-x
getopt()
任意に選択できるパラメータは別の問題です。適用されない場合がありますが、パラメータなしでオプションを提供するのは難しいため、必要になる場合が-x foo
あります。-xfoo
どのようなものを「使用すべきか」は好みの問題であり、誰もが自分の意見を持つ可能性が高い。
答え2
一部のプログラムにはスタイルが必要ですが、一部のプログラムではそうではありません。たとえば、
mysql -ph 10.1.1.1
パスワードを使用して接続を試みますmysql
。localhost
h
mysql -p -h 10.1.1.1
一方、接続して10.1.1.1
パスワードを求めるメッセージが表示されます。
答え3
これはユーティリティによって定義されます。一部は1つまたは両方のフォームを受け入れます。
存在するPOSIXユーティリティルール、このテンプレートはパラメータ構文セクションにあります。
utility_name[-a][-b][-c option_argument]
[-d|-e][-f[option_argument]][operand...]
オプション・パラメーターがオプションでない場合は、オプション・パラメーターをスペース文字でオプションと区別する必要があります。この場合、区切り文字を使用しないでください。しかし、それから...
過去のアプリケーションの継続的な動作を保証するために、POSIX.1-2017にはいくつかの例外があります。
ユーティリティー構文ガイドラインの次のセクションでは、ガイドライン7は、オプションパラメーターがオプションにならないことを示しています。
これらすべての混乱の1つの明白なことは、フラグとパラメータの間にスペースの明確な規則がないことです。
情報配信の具体例:
Syntax error Syntactically correct
xclip -ir <<< ABC xclip -i -r <<< ABC
xkbcomp -I /home/user "main" :0 xkbcomp -I/home/user "main" :0
rename -e's/f/x/' f rename -e 's/f/x/' f
ちなみに、お知らせガイドライン3には、「各オプション名は単一の英数字でなければなりません」と記載されています。複数文字のオプション名を使用する多くのユーティリティの例を考えることができます。
答え4
プログラムによって異なりますが、一般的に言えばオプションとその値の間にはスペースが必要です。
一部のアプリケーション/ユーティリティは--option=value
パラメータを受け入れますが、この場合は空白を含めることはできません。