CLIを設計するとき、オプションまたはサブコマンドを使用するための好み/経験則はありますか?

AlpGlide3

たとえば、あるパッケージをインストールするには、次のようにpacman使用します。使用
pacman -S <package>
中の誰かdnfが次のように入力します。
dnf install <package>
Whilepacman-Sオプションをdnf使用し、サブコマンド使用しますinstall

他の例としてはnmcli、 and tar、 with nmcli connection up <connection>(サブコマンドを使用) およびtar -xzvf <file>(オプションを使用) があります。

それぞれの長所と短所は何ですか、それとも単なる個人的な好みですか?

アンドレイ・ビエンコウスキー

あなたが「単語」と呼ぶもののより専門的な用語は、「サブコマンド」です。コマンド ライン インターフェイスを、独自のオプション セットを持つ多数のサブコマンドを含むコマンドとして設計することは非常に一般的です。サブコマンドには、独自のサブコマンドがある場合があります。git はそのような例の 1 つです。

git remote add -f -t "$BRANCH_NAME" "$REMOTE_NAME" "git://example.com/repo"

CLI をサブコマンドに分割する 1 つの理由は、いくつかの異なる関連することを実行できることを強調するためです。dnfできinstallpacakgesは、removeパッケージは、upgradeパッケージは、searchパッケージの表示infoパッケージなどのすべての非常に異なるアクションについて。これらのアクションの多くには、微調整できる追加のノブと、オプションで選択できる選択肢があります。

使用サブコマンドへのもう一つの理由は、サブコマンドは、オプションの名前空間を提供することである:--alldnf list --allから手段全く別物--alldnf search --all

大きな CLI をサブコマンドに分割するもう 1 つの理由は、ドキュメントです。git にサブコマンドがない場合を想像してみてください。git マニュアル全体は、git が持つすべてのオプションとそれらの間の関係を詳述する 1 つの非常に長いページになります。また、実行git commit --help-commitサブコマンドに固有のヘルプ ページが表示されますまた、tldrインストールして実行しtldr git commitますcommit。サブコマンドに固有のチート シートが表示されます

もう 1 つの考慮事項は、サブコマンドが有効にする操作のモードを組み合わせることができるようにする場合、サブコマンドを使用しないことです。1 回のコマンド呼び出しで複数のオプションを指定できますが、指定できるサブコマンドは 1 つだけです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

UIViewの描画関数をオーバーライドするか、サブビューを実装するときにCAShapeLayerを使用するかを決定するための経験則はありますか?

分類Dev

Javaでデフォルトのログレベルを設定するためのコマンドラインオプションはありますか

分類Dev

bashでコマンドを見つけるための配列としてオプションを渡す方法はありますか?

分類Dev

C ++の関数の戻り値の型としてポインターまたは参照を使用する際の経験則はありますか?

分類Dev

コードを書き直さずに.NETStandardでSystem.Drawing.Bitmapを使用するためのオプションはありますか?

分類Dev

JS-複数のウィンドウから使用済みウィンドウを取得するためのオプションはありますか?

分類Dev

Ubuntuのランチャーを起動するためのコマンドラインオプションはありますか?

分類Dev

コマンドの指定されたオプションについてのみ `man`ドキュメントを表示する方法はありますか?

分類Dev

アプリケーションのインストールとアップグレードに関する経験則はありますか?

分類Dev

Terracottaオープンソースを使用した経験はありますか?

分類Dev

Typescript:コメント付きのコードを文書化するための規則はありますか?

分類Dev

COPYはcqlshでのみ使用できるため、JavaでCQLコマンドとして使用することはできません。CSVをテーブルにインポートする同様の方法はありますか?

分類Dev

JUnitテストケースの工数を見積もるための経験則はありますか?

分類Dev

静的メソッドとインスタンスメソッドをコーディングする場合の経験則はありますか?

分類Dev

とき、私は特定の副作用のために新しいサブスクリプションを作成する必要がありますか?

分類Dev

-nまたは-pオプションを使用するときに、コマンドライン引数を@ARGVに渡すことは可能ですか?

分類Dev

AngularJSの大規模な時計コレクションを定義するためのきちんとした方法はありますか?

分類Dev

Typescriptのサブスクリプションにサブスクリプションを含めるためのより効率的な方法はありますか

分類Dev

キャプションを使用するためのExoPlayer + Leanbackライブラリの例はありますか?

分類Dev

cookiecutter-djangoを使用してアプリを作成するためのコマンドはありますか?

分類Dev

コマンドを練習するために、Linuxのコマンドライン環境を備えたウェブサイトはありますか?

分類Dev

Pythonとは別のプログラムで利用できるコマンドラインオプションを知る方法はありますか?

分類Dev

kubectl exportを使用するときに、nodeportサービスを介してサービスを公開するためのホストポートを選択するオプションはありますか?

分類Dev

他のウェブサイトからHTMLを抽出するためのYahooのYQLの他のオプションはありますか

分類Dev

Dockerコンテナのオーバーヘッドを計算するための式はありますか?

分類Dev

書式設定を呼び出すための組み込みのIEXコマンドはありますか?

分類Dev

AsusmoboでUEFIBIOSチップをフラッシュするためのオプションはありますか?

分類Dev

Azure Devopsを管理するためのPowerShellコマンドはありますか?

分類Dev

BigQuery は、テーブルの読み込みのために Google シートにリンクするときに間違ったシートを選択します。ロード中に使用する他のオプションは?

Related 関連記事

  1. 1

    UIViewの描画関数をオーバーライドするか、サブビューを実装するときにCAShapeLayerを使用するかを決定するための経験則はありますか?

  2. 2

    Javaでデフォルトのログレベルを設定するためのコマンドラインオプションはありますか

  3. 3

    bashでコマンドを見つけるための配列としてオプションを渡す方法はありますか?

  4. 4

    C ++の関数の戻り値の型としてポインターまたは参照を使用する際の経験則はありますか?

  5. 5

    コードを書き直さずに.NETStandardでSystem.Drawing.Bitmapを使用するためのオプションはありますか?

  6. 6

    JS-複数のウィンドウから使用済みウィンドウを取得するためのオプションはありますか?

  7. 7

    Ubuntuのランチャーを起動するためのコマンドラインオプションはありますか?

  8. 8

    コマンドの指定されたオプションについてのみ `man`ドキュメントを表示する方法はありますか?

  9. 9

    アプリケーションのインストールとアップグレードに関する経験則はありますか?

  10. 10

    Terracottaオープンソースを使用した経験はありますか?

  11. 11

    Typescript:コメント付きのコードを文書化するための規則はありますか?

  12. 12

    COPYはcqlshでのみ使用できるため、JavaでCQLコマンドとして使用することはできません。CSVをテーブルにインポートする同様の方法はありますか?

  13. 13

    JUnitテストケースの工数を見積もるための経験則はありますか?

  14. 14

    静的メソッドとインスタンスメソッドをコーディングする場合の経験則はありますか?

  15. 15

    とき、私は特定の副作用のために新しいサブスクリプションを作成する必要がありますか?

  16. 16

    -nまたは-pオプションを使用するときに、コマンドライン引数を@ARGVに渡すことは可能ですか?

  17. 17

    AngularJSの大規模な時計コレクションを定義するためのきちんとした方法はありますか?

  18. 18

    Typescriptのサブスクリプションにサブスクリプションを含めるためのより効率的な方法はありますか

  19. 19

    キャプションを使用するためのExoPlayer + Leanbackライブラリの例はありますか?

  20. 20

    cookiecutter-djangoを使用してアプリを作成するためのコマンドはありますか?

  21. 21

    コマンドを練習するために、Linuxのコマンドライン環境を備えたウェブサイトはありますか?

  22. 22

    Pythonとは別のプログラムで利用できるコマンドラインオプションを知る方法はありますか?

  23. 23

    kubectl exportを使用するときに、nodeportサービスを介してサービスを公開するためのホストポートを選択するオプションはありますか?

  24. 24

    他のウェブサイトからHTMLを抽出するためのYahooのYQLの他のオプションはありますか

  25. 25

    Dockerコンテナのオーバーヘッドを計算するための式はありますか?

  26. 26

    書式設定を呼び出すための組み込みのIEXコマンドはありますか?

  27. 27

    AsusmoboでUEFIBIOSチップをフラッシュするためのオプションはありますか?

  28. 28

    Azure Devopsを管理するためのPowerShellコマンドはありますか?

  29. 29

    BigQuery は、テーブルの読み込みのために Google シートにリンクするときに間違ったシートを選択します。ロード中に使用する他のオプションは?

ホットタグ

アーカイブ