フラグ、オプション、および引数の違いは何ですか?[閉まっている]


14
  • ls -a-aオプションを検討します)

  • sudo -u username-u=オプション、username= arg)

  • chmod 664 my-dir664=オプション、my-dir= arg)

おそらくディレクトリ一覧を見るときを除いて、「これはフラグです」と言う例は考えられません。

-r--------. 1 david david   3344 May 19 17:48 611056.pdf

これには、所有者に設定された「読み取りフラグ」がありますが、それだけです。それを「読み取りオプション」と呼ぶのを止めるのは何ですか?

私は主にDocBook XMLで技術文書を作成および編集しますが、可能な限り一貫性があり正確な違いの説明を探しています。しかし、私はすでにパターンが形成されているのを見ています:

  1. フラグはブール値になる傾向があります。例えば、setenforce 0
  2. オプションは、コマンドの動作を定義するのに役立ちます。一部はオプションです。
  3. 引数は、操作するオブジェクトをコマンドに伝えます。

フラグとオプションを組み合わせて自分自身を見ることができました(一部のオプションには12個の値がありますが、ブール値には2つしかありません)。引数は、それ自体を維持するのに十分に異なって見えます。


2
「私が電話するのを止めるのは…」ああ何もない。スペードを木と呼ぶのを止めるものが何もないように。
ムル

@muru-英語の辞書はあなたの主張に同意しませんが。
-DarkHeart

3
物事をより混乱させるために、あなたのls -a例のように、パラメータ/引数をとらないオプションをフラグとも呼びます。(私にとって、フラグはブール変数です。)
Ulrich Schwarz

3
彼らは犬小屋です; それらのすべて30。:-)⁠–
スコット

あなたが見たいものを絞り込むので、あなたが見るパターンはそこにあるだけです。それを抽出例えば(私は30年以上にわたって使用されていること)とないTARファイルを作成する1つの方法は次のとおりです tar c abc.txt > x.tar、そこにcある機能。あなたはそれをオプションと呼ぼうとしており、それは完全に不適切です。
アントン

回答:


17

「オプション」、「引数」、および「フラグ」という用語の一貫した定義はありません。また、ソフトウェア開発の世界には、その使用を強制できる中央機関はありません。これは多くの用語で起こります。「ディレクトリ」という単語を30年以上使用した後、Microsoftの新語で混乱している「フォルダ」という単語を使用している人々に対処しなければなりません。

プログラミングでは、用語のコンセンサス定義を実現するさまざまな方法があります。「引数」/「オプション」/「フラグ」の場合、プログラミング言語の標準的なマニュアルとチュートリアルは、一般的なライブラリで使用されている用語と同様に、使用を強制するのに役立ちました。

たとえば、コマンドの後にコマンドラインに入力するものは、関数呼び出しの引数と同様に、コマンドの「引数」と呼ばれることが多く、これはおそらくCマニュアルでは「引数」と呼ばれているためです(したがってargcargv)。argparsePythonライブラリはまた、用語「引数」を施行するのに役立ちます。ただし、それらが「パラメーター」と呼ばれることも確認しました。

「オプション」という用語は「オプション」から派生したものであり、省略できることを意味します。getoptCライブラリには、この用語の一つを使用することです。しかし、実際にはオプションではない「オプション」の先例があります。たとえば、argparse マニュアルには「必須オプション」を作成できると記載されています(ただし、これは「一般に悪い形式」と見なされています)。オプションは、多くの場合、単一の(が先行している-)または二重(--、長いオプション)ダッシュが、必要またはオプションのためのダッシュの使用を強制しない、よく知られたコマンドがあります(例えば、tarps、およびdd)。オプションはそれ自体が引数(例、-w80and --color=always)、または場合によっては複数の引数を取ることができます。

私の経験では、「フラグ」はオプションと同じですが、通常は引数自体を使用せず、基本的にブールのオン/オフスイッチを表します。

より広いノートでは、すべてのプログラマーは、物事を行い、名前を付ける標準的な方法を試すことができますが、余分なコストをかけずにホイールを再発明することもできるため、名前の一貫性はありません。そして、コードを文書化し、例を挙げてこれらの単語にどのような新しい意味を与えたのかが明確になると、コードからそれらを拾う人が十分にいる場合、それらの名前と意味がそのまま残ることがあります。


7

フラグはオプションの一種であり、ブール型のオプションであり、デフォルトでは常にfalseです(たとえば、-verbose、-quiet、-all、-longなど)。

オプションは関数に動作方法を指示し(例:-a、-l、-verbose、-output、-name、-cなど)、引数は関数にを実行する(例:*file1、ホスト名、データベース)。


したがって、の定義では git pull git://bla/blapullgit何に取り組むべきかを伝える引数です。
アントン

1
@Anthonいいえ、演算子(スイッチ/フラグ/パラメーター)、引数、およびコマンドがありますpullコマンドです。コマンドはアプリケーションの名前の拡張と考えることができます。gitpull <...>はと呼ばれるアプリケーションと同等ですgit-pull。アプリケーションにコマンドがある場合、各コマンドはアプリケーションにまったく異なることをさせます。
ジギークルエルティフリーZeitgeister

gitの人々はそれをコマンドと呼ぶかもしれませんが、それは、例えばforのためtarに呼ばれるものとは限りません。c作成のために使用することはfunctionと呼ばれます。そして、それがまさに問題です。あなたの答えからあると思われる場合でも、用語の標準化はありません
アントン

フラグはデフォルトでfalseである必要はありません。コマンドラインでフラグを指定すると、デフォルトの状態が逆になります(on-> off、またはoff-> on)。フラグと区別するためにトグルと呼ぶ人もいます。他のものは、区別が重要でないと思います。
cas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.