ls -a
(私は-a
オプションを考えます)sudo -u username
(-u
=オプション、username
=パラメータ)chmod 664 my-dir
(664
=オプション、my-dir
=パラメータ)
ディレクトリのリストを見るときを除いて、「これはフラグです」と言える例を考えることはできません。
-r--------. 1 david david 3344 May 19 17:48 611056.pdf
これは所有者に「読み取りフラグ」を設定しますが、それ以上ではありません。私がそれを「読み取りオプション」と呼ぶのを防ぐのはなぜですか?
私は主にDocBook XMLで技術文書を作成および編集し、違いについてできるだけ一貫して正確な説明を探しています。しかし、私は次のパターンが現れるのを見ました。
- フラグはブール値である傾向があります。例えば、
setenforce 0
- オプションはコマンドのしくみを定義するのに役立ちます。一部はオプションです。
- パラメーターは、コマンドにどのような操作を実行するかを指示します。
フラグとオプションを組み合わせる様子を見ることができます(一部のオプションには12個の可能な値がありますが、ブールには2個しかありません)。主張はそのまま維持するのに十分違うようです。
答え1
「オプション」、「パラメータ」、および「フラグ」という用語には一貫した定義はなく、ソフトウェア開発の分野にはそれらの使用を強制する中央権限はありません。これは多くの用語で発生します。 30年以上にわたって「ディレクトリ」という言葉を使用した後、私は今、Microsoftの新しい言葉に混乱している「フォルダ」という言葉を使用している人に対処する必要があります。
用語の合意された定義は、プログラミングでさまざまな方法で到達できます。 「パラメータ」/「オプション」/「フラグ」に関する限り、プログラミング言語の仕様マニュアルとチュートリアルは、公共図書館で使用されている用語と同様に、使用法を適用するのに役立ちます。
たとえば、コマンドの後にコマンドラインに入力する内容をコマンドの「引数」と呼びます。関数呼び出しパラメータこれは、部分的にCマニュアルで「パラメータ」(したがってargc
)と呼ばれるためですargv
。 Pythonargparse
ライブラリは、「パラメータ」という用語を強化するのにも役立ちます。しかし、「パラメータ」と呼ばれることも見たことがあります。
「オプション」という用語は「オプション」から派生しており、これは省略できることを意味します。 Cgetopt
ライブラリはこの用語の1つの用途です。しかし、「オプション」が実際にはオプションではない先例があります。argparse
マニュアルには「必須オプション」を生成できることが記載されています。(また、これは「一般的に悪い形式と見なされます」と示されていますが)。オプションの前には、一般的に単一ダッシュ(-
)またはデュアル--
ダッシュ(、長いオプション)がありますが、オプションでダッシュを使用するように要求または強制しないいくつかのよく知られているコマンドもあります(例:、tar
およびps
)dd
。オプションは次のとおりです。それ自体1つの引数(たとえば、-w80
and --color=always
)を使用するか、場合によっては複数の引数を使用します。
私の経験によると、「フラグ」はオプションと同じですが、一般的に引数自体を許可せず、本質的にブールスイッチを表します。
より広い観点から見ると、各プログラマーは仕事を行い、名前を付けるための標準的な方法を見つけ、多くの追加費用なしでホイールを再作成するオプションを持っているので、命名は決して一貫性がありません。コードを文書化し、例によって単語の新しい意味が明確になると、十分な人がコードからその単語を選択すると、その名前と意味がそのまま残る可能性が高くなります。
答え2
フラグはブール型であり、デフォルトでは常にfalseのオプションです(たとえば、--verbose、--quiet、--all、--longなど)。
オプション通知機能どのように引数が関数に指示している間、操作(-a、-l、--verbose、--output、-name、-cなど)を実行します。何*
(例:file1、ホスト名、データベース)で動作します。