37

コマンド ライン アプリケーションを再設計しており、より直感的に使用できる方法を探しています。コマンド ライン アプリケーションに渡されるパラメーターの形式に関する規則はありますか? または、人々が役立つとわかった他の方法はありますか?

4

17 に答える 17

29

Windows のコマンド ライン仕様をよく目にしますが、プログラムが Linux 向けである場合、GNU コマンド ライン標準が最も直感的であることがわかります。基本的に、コマンドの長い形式には 2 つのハイフン (例: --help) を使用し、短いバージョンには 1 つのハイフン (例: -h) を使用します。また、ショート バージョンを一緒に「スタック」して (例: tar -zxvf filename)、長いバージョンと短いバージョンを思いのままに組み合わせることもできます。

GNU サイトには、標準のオプション名もリストされています。

getopt ライブラリは、これらのコマンドの解析を大幅に簡素化します。C が得意でない場合、PythonにはPerlと同様のライブラリがあります。

于 2008-09-20T17:21:15.047 に答える
14

C# を使用している場合は、 Mono.GetOptionsを試してください。これは、非常に強力で使いやすいコマンドライン引数パーサーです。Mono 環境および Microsoft .NET Framework で動作します。

編集:ここにいくつかの機能があります

  • 各パラメータには 2 つの CLI 表現があります (1 つの文字と文字列、たとえば -a または --add)。
  • デフォルト値
  • 強く型付けされた
  • 手順を含むヘルプ画面を自動的に生成します
  • バージョンと著作権画面を自動的に生成
于 2008-09-20T17:02:09.817 に答える
4

特定の CLI で気に入っていることの 1 つは、ショートカットの使用です。
つまり、次の行はすべて同じことをしています

myCli.exe describe someThing
myCli.exe descr someThing
myCli.exe desc someThing

これにより、ユーザーは毎回 all コマンドを入力する必要がなくなります。

于 2008-09-20T17:06:43.740 に答える
3

最善の方法は、できれば何も仮定しないことです。オペレーターが実行のためにアプリケーション名を入力し、パラメーターがない場合は、USAGE ブロックでヒットするか、代わりに Windows フォームを開いて、必要なものすべてを入力できるようにします。

c:\>FOO

FOO

USAGE FOO -{Option}{Value}

-A Do A stuff
-B Do B stuff

c:\>

宗教的なトピックの見出しの下にパラメータ区切りを配置します: ハイフン (ダッシュ)、二重ハイフン、スラッシュ、なし、位置指定など。

プラットフォームを示していませんでしたが、次のコメントでは、Windows と .net を想定します。

.net でコンソール ベースのアプリケーションを作成し、コンソール ベースのプロジェクトを選択して Windows.Forms、System.Drawing などの DLL を追加するだけで、Forms を使用してデスクトップとやり取りできるようになります。

私たちはこれを常に行っています。これにより、誰も暗い路地を曲がらないことが保証されます。

于 2008-09-20T17:03:54.900 に答える
3

これはあなたを助けるかもしれないCodeProjectの記事です...

C#/.NET コマンド ライン引数パーサー

VB がお好きな方は、別の記事 (ガイダンス関連のコンテンツがもう少しあります) をご覧ください...

VB.NET を使用してコマンド ライン パラメータを解析および検証する

于 2008-09-20T17:08:16.747 に答える
3

コマンド ラインの規則は OS ごとに異なりますが、おそらく最も多く使用され、最も一般に精査されている規則は、GNU getopt パッケージでサポートされている規則です。見る詳細については、 http://www.gnu.org/software/libc/manual/html_node/Using-Getopt.htmlを参照してください。

これにより、-nr などの 1 文字のコマンドと、--numeric --reverse などのより長い自己文書化オプションを混在させることができます。--help (-?) オプションを実装すると、ユーザーは必要な情報をすべて把握できるようになります。

于 2008-09-20T17:12:43.553 に答える
3

@voncの回答を補完して、あいまいな略語を受け入れないでください。例えば:

  myCli.exe describe someThing
  myCli.exe destroy someThing
  myCli.exe des someThing ???

実際、その場合、おそらく「破壊」の略語は受け入れられないでしょう...

于 2008-09-20T17:20:36.467 に答える
2

私は常に /? を追加します。パラメータを使用してヘルプを取得し、私は常にデフォルト (つまり、最も一般的なシナリオ) の実装を試みます。

それ以外の場合、スイッチには "/x" を使用し、値を渡す必要があるスイッチには "/x:value" を使用する傾向があります。正規表現を使用してパラメーターを簡単に解析できます。

于 2008-09-20T17:04:32.107 に答える
0

コマンドライン パーサーを含む .Net C# ライブラリを作成しました。CmdLineObject クラスから継承するクラスを作成し、Initialize を呼び出すだけで、プロパティが自動的に設定されます。さまざまな型 (プロジェクトに含まれている高度な変換ライブラリを使用)、配列、コマンド ライン エイリアス、ワンクリック引数などへの変換を処理できます。コマンド ライン ヘルプ (/?) も自動的に作成します。

興味のある方は、プロジェクトの URL はhttp://bizark.codeplex.comです。現在、ソースコードとしてのみ入手可能です。

于 2010-11-21T05:29:04.100 に答える
0

-operation [parameters] -command [your command] -anotherthings [otherparams]....

例えば、

YourApp.exe -file %YourProject.prj% -Secure true
于 2008-09-20T17:01:09.743 に答える
0

getopts など、コマンド ライン インターフェイスを生成するための標準ツールの 1 つを使用すると、自動的に適合します。

于 2008-09-20T17:02:29.473 に答える
0

アプリケーションに使用する規則は、次の条件によって異なります。

1) アプリケーションの種類。
2) 使用しているオペレーティング システム。Linux? ウィンドウズ?どちらも異なる規則を持っています。

私がお勧めするのは、渡されたパラメーターに特に注意を払いながら、システム上の他のコマンドの他のコマンド ライン インターフェイスを調べることです。パラメータが間違っていると、ユーザー ソリューション向けのエラー メッセージが表示されます。見つけやすいヘルプ画面も使いやすさに役立ちます。

アプリケーションが正確に何をするかを知らなければ、具体的な例を挙げることは困難です。

于 2008-09-20T17:04:48.033 に答える
0

Perl を使用している場合、私のCLI::Applicationフレームワークがまさに必要なものかもしれません。これにより、SVN/CVS/GIT のようなユーザー インターフェイスを備えたアプリケーションを簡単に構築できます ("your-command -o --long-opt some-action-to-execute some parameters")。

于 2008-09-20T17:34:01.457 に答える
0

アプリケーションに使用する規則は、次の条件によって異なります。

1) アプリケーションの種類。2) 使用しているオペレーティング システム。

これは確かに真実です。dos-prompt の規則についてはよくわかりませんが、UNIX ライクなシステムでは、一般的な規則はおおよそ次のとおりです。

1)フォーマットは

appName パラメーター

2) 1 文字のパラメータ (「x」など) は -x として渡されます 3) 複数文字のパラメータ (「add-keys」など) は --add-keys として渡されます

于 2008-09-20T17:10:00.143 に答える