コマンドパラメータと引数 - 正しい入力方法は何ですか?

コマンドパラメータと引数 - 正しい入力方法は何ですか?

これは正しい方法- パラメータと型パラメータをスペースで区切っていますか?

そして主張を分離する必要がありますか、それとも一緒に保つべきですか?

例:

<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-xgetopt()任意に選択できるパラメータは別の問題です。適用されない場合がありますが、パラメータなしでオプションを提供するのは難しいため、必要になる場合が-x fooあります。-xfoo

どのようなものを「使用すべきか」は好みの問題であり、誰もが自分の意見を持つ可能性が高い。

答え2

一部のプログラムにはスタイルが必要ですが、一部のプログラムではそうではありません。たとえば、

mysql -ph 10.1.1.1  

パスワードを使用して接続を試みますmysqllocalhosth

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パラメータを受け入れますが、この場合は空白を含めることはできません。

関連情報