4

適切な Linux/unix スタイルのアプリケーションを実行するには、何が最良の選択ですか (たとえば、afaik lsは getopt_long を使用しますが、たとえばffmpeg getopt_long_only を使用します)。どれをお勧めしますか?

乾杯、

4

4 に答える 4

5

私の意見では、通常、次のことは真実です。

  • ユーザーは覚えやすい長い自然言語オプションを好みます。
  • 数百のオプションを持つプログラムをラップするスクリプトを作成するユーザーは、短いオプションを好みます。

プログラムが十分に大きくなると、正規のオプションと比較したときに何らかの意味を持つ短いオプションの組み合わせが最終的に使い果たされます。たとえば、-Z は、まったく異なる文字で始まる長いオプションと同じである可能性があります。その時点で、特にメンテナが 1 人である場合、オプションの解析コードはメンテナンスの頭痛の種になります。

その場合、いくつかの選択肢があります。

  • gengetoptのようなものを使用して、テンプレートからそのコードを記述します
  • 長いオプションのみを使用する (通常は悪い考えです)
  • プログラムを 52 個のオプション (az AZ) に抑えるようにしてください (通常は悪い考えです)。
  • 短いオプションが引数を取らないスイッチになるオプションを実装し、長いオプションを使用するオプションを使用します。
  • あなたにとっては完全に理にかなっていて、ユーザーにとってはほとんど意味のない他のメソッドの群れ

さまざまな場所に混ざると、本当に痛みを理解し始めます。

多くのオプションを使用するツールを作成する場合、通常、最初に行うことは、引数を解析するコードを作成することです。これは、プログラムの流れを計画するのに役立ち、アウトラインになります。その後、各オプションを機能させるだけです。

別の言い方をすれば、オプションが慢性的な痛みになるところまで来たら、それは通常、プログラムが計画を超えて急速に進化したことを示しています。

とにかく、私の長い答えを締めくくるには、通常、可能な限り compat getopt() の動作を維持することをお勧めします。ユーザーからの指示を取得するコードは、ビジネスを行うためのコストにすぎません。そのため、可能であれば、ユーザー エクスペリエンスを向上させるにはどうすればよいかを十分に考慮する必要があります。

于 2010-03-15T03:54:48.650 に答える
2

「適切な gnu/linux スタイル」では、 getopt_long() を使用し、ほとんどのオプションに長いオプションを指定する必要があります (長いオプションのみの場合もあります)。ほとんどのコマンド ライン インターフェイスはこれに従います。

于 2010-03-15T03:32:46.440 に答える
1

ない。argp_parse または libpopt のいずれかを使用します。

于 2010-02-03T14:34:00.087 に答える
0

getopt_long_only を使用したことはありませんが、不明なフラグが単一の で始まる場合、長いオプションと短いオプションの両方を調べる必要があるため、さらにルックアップを行う必要があるようです-

'-' ('--' ではない) で始まるオプションが長いオプションと一致しないが、短いオプションと一致する場合、代わりに短いオプションとして解析されます。

--man getopt_long_only

于 2010-02-03T14:34:36.273 に答える