良いヘルプメッセージを生成する方法を教える標準/文書はありますか?

良いヘルプメッセージを生成する方法を教える標準/文書はありますか?

これはフォローアップです。前の質問ls、Silverrockerは、またはなどのコマンドに似たヘルプメッセージを表示する良い方法を提案しましたdu

program --help

Usage: program [<options>][<arguments> ...]

Options:
--help         show this message, then exit
--something    after some spaces for alignment, an explenation follows.

私はこのアプローチが大好きですが、そのようなヘルプメッセージを生成する方法だけを推測できます。このようなものを生成する方法に関するGNU/文書/標準はありますか?

答え1

lsとduでは、--help出力は単にプログラムにハードコードされます。

Pythonなどのスクリプト言語には、自動的にこれを実行するオプションの解析ライブラリがあります。

標準に関して私が見つけることができる唯一のものは次のとおりです。

http://www.gnu.org/prep/standards/html_node/_002d_002dhelp.html#g_t_002d_002dhelp

またはより具体的には、ls、du(coreutils):

http://www.gnu.org/software/coreutils/manual/html_node/Common-options.html#Common-options

これはまったく役に立ちません。

フォーマットをどれくらい上手くするかによって変わると思います。 :)

答え2

コマンドラインユーティリティを作成するときにその形式で情報を出力する関数を作成しusage()、getopt(または他の)コードで何かを追加または変更したときにそれらを反映するようにusing関数を更新します。もちろん、このシステムの問題は、怠惰な場合は誤った使用法メッセージを受け取ることができるということですが、回避または修正するのは難しい問題ではありません。

指示によれば、「usage:」行はマニュアルページの規則に従うことができます。たとえば、次のようになります。

Usage: mycommand -h | [-x|y|z] [-a] [-b arg] required_param [optional_param]

パイプ表現はどこにありますか?または(したがって、x、y、またはzのいずれかを使用できます)とオプションのビットを角括弧で囲みます。 lsによると、これは次のように単純化できます。

Usage: mycommand [options] required_param [optional_param]

次に、オプションをアルファベット順に探します。

-h廃止されたオプションが解析または使用されている場合--help、必須パラメータが欠落している場合など、「使用」がトリガされます。

関連情報