16

私は現在、Unix / Linux 入門クラスに登録していますが、インストラクターと私が同意できない質問に行き着きました。

cp -i file1 file2

前のコマンドについて正しいのはどれですか?

  • A. ユーティリティは 1 つだけです
  • B. 1 つのオプションがあります
  • C. 3 つの引数があります
  • D. file1 は file2 としてコピーされ、上書きが発生する前にユーザーに警告が表示されます
  • E. 上記のすべて

私はそれがEであると主張しました。上記のすべて。インストラクターはDに落ち着きました。

AB、およびDがすべて正しいことは明らかです。ハングアップはC-iで、フラグがオプションと引数の両方である かどうかでした。

私の論理では、すべてのオプションは引数ですが、すべての引数がオプションであるとは限らず、複数の真の答えがリストされているため、多肢選択問題の伝統では、答えは上記のすべてである可能性が高い.

この問題について決定的な証拠を見つけることができなかったので、マスターに任せようと思いました。

4

5 に答える 5

2

ここのマニュアルページには次のように記載されています。

長いオプションへの必須の引数は、短いオプションでも必須です。

これは、この特定の質問のコンテキストでは、少なくとも、オプションを引数と見なしてはならないことを意味しているようです。そうしないと、非常に再帰的で無意味になります。

インストラクターはあなたの説明を受け入れる必要があると思いますが、これは実際にはほとんどの典型的なケースで髪を分割しています.

于 2012-09-19T14:40:21.580 に答える
0

これが私が教えられた方法であり、この場合は次のように言われています。

cp -i file1 file2

正解は AB と D ですが、C ではありません。

since-iはオプションで、file1file2は引数です。通常、オプションはアプリケーションまたはコマンドの動作を変更すると見なされますが、引数は変更されません。

元のアプリケーションの引数を考慮するかどうかはセマンティクス次第だと思いますが-i、これは動作を変更するオプション (または引数) ですcpが、英語では引数ではなくオプションと見なされます。

これが、コマンドの 2 つの部分の違いを定義し、保持する方法です。

別のコマンド例として、cronjobs. 私はよく PHP の cronjobs を使用しますが、通常、コマンドにはオプションと引数の両方が関連付けられています。オプションは常に追加の動作を定義するために (私の意見では) 使用されますが、引数は操作を完了するために必要なデータをアプリとその動作に提供するように設計されています。

編集

私は@unwindに同意します。これは髪を分割しており、実際には多くの場合、シナリオと意見に帰着します。マークすることさえ彼にとって非常に悪いことでした。彼はこれが主観的な質問であることを知っておくべきでした。主観的な質問でいっぱいになると、テストは完全に不公平になります。

于 2012-09-19T15:04:14.123 に答える
0

「引数」という用語は、さまざまな文脈でさまざまな方法で使用されていると思いますが、それが意見の相違の根底にあるようです。ただし、あなたのスタンスを支持して、C ランタイムは、cpおそらく書かれたものであることに注意してください。これmain(argc, argv)は、少なくとも C アーキテクチャ/ライブラリ/etc. オプションは引数のサブセットと考えられていました。もちろん、オプションは独自の引数(異なるコンテキスト)を持つことができます....

于 2012-09-19T15:07:25.677 に答える
0

うーん...私は個人的にオプションと引数を区別するのが好きですが、技術的にはオプションは引数であると言えます。あなたは正しいと思いますが、あなたのインストラクターはあなたに混乱させたくないので、 Dに落ち着いたと思います. たとえば、次は上記のコマンドと同等です...:

 ARG1="-i" ; ARG2="file1" ; ARG3="file2" ; cp $ARG1 $ARG2 $ARG3

 ARG1="-i" ; ARG2="file1" ; ARG3="file2" ; cp $ARG2 $ARG1 $ARG3

 ARG1="-i" ; ARG2="file1" ; ARG3="file2" ; cp $ARG2 $ARG3 $ARG1

...cp $ARG1 $ARG3 $ARG2同じではありません。オプションは特別なタイプの引数だと思います。

于 2012-09-19T14:54:29.847 に答える