「非オプション引数」とは何ですか?

「非オプション引数」とは何ですか?

理解しようとしinfo whoますが、単語をまったく理解していません。「非オプション引数」。誰かがこの用語を簡単な言葉や例として説明できますか?

修正する:からinfo who

与えられたらオプション以外のパラメータなしwho現在ログインしているユーザーごとに、ログイン名、ターミナル行、ログイン時間、リモートホスト名、またはXマークなどの情報を印刷します。

与えられたらオプションではないパラメータwhoデフォルトのシステムメンテナンスファイル(通常/var/run/utmpはまたは/etc/utmp)ではなく、ログインしたユーザー履歴を含むファイル名として使用します。通常、以前に誰がログインしているかを確認するための/var/log/wtmpパラメータとして使用されます。who

与えられたらオプションではない2つのパラメータwho実行しているユーザーのエントリ(標準入力によって決まります)のみを印刷し、ホスト名を前に付けます。伝統的に与えられた2つのパラメータは次のとおりですam iwho am i

私はパラメータとオプションの違いを知りたかったのですが、これは[再]多くを無効にします。

答え1

用語が完全に固定されていないため、文書ごとに異なる用語を使用することも、同じ用語でも異なる意味を持ちます。あなたが読んでいるマニュアルページの用語は一般的に使用される用語です。この時間はPOSIX基準。簡単に言えば、コマンドの後に続くすべての単語は引数で、で始まる引数-はオプションです。

ディスカッション

シェルコマンド言語でユーティリティに渡される引数は、exec関数の1つによって生成されたargv配列の単一の文字列と同じです。引数は、コマンド名の後に続くオプション、オプションパラメーター、またはオペランドのいずれかです。

オペランド

通常、処理を完了するために必要な情報をユーティリティに提供するオブジェクトとして使用されるコマンドの引数です。オペランドは通常、コマンドラインのオプションに従います。

オプション

通常、ユーティリティーのデフォルトの動作に対する変更を指定するために使用されるコマンドの引数です。

「ユーティリティ」は一般に「コマンド」と呼ばれるものです(この単語の標準的な使用は便利パラメータまたは複合シェルコマンドを含む「コマンド」の意味とあいまいさを避けるため)。

ほとんどのコマンドは次のとおりです。標準ユーティリティ引数の構文ここで、オプションは-(ダッシュ、マイナス記号とも呼ばれる)で始まります。したがって、オプションは-a(POSIXの指示に従って短いオプション)または--all(長いオプション、GNU拡張)のようになります。オプションではない引数は、で始まらない、またはでのみ-構成される引数です(リテラルファイル名と-考えますが、多くのコマンドはそれを標準入力または標準出力として扱います)。who

また、いくつかのオプションはそれ自体で議論の余地があります。このパラメータはさまざまな方法で渡すことができます。

  • 単一文字オプションの場合、ユーティリティの同じ引数::foo -obarbar単一文字オプションの引数です-o
  • GNU長いパラメータ構文では、同じパラメータ内で等号で区切られていますfoo --option=bar
  • 別の引数:foo -o barまたはfoo --option bar。オプション-o(または--option)が引数を取る場合、これはbarオプション(または)の引数です。 (or) がパラメータを使用しない場合はオペランドです。-o--option-o--optionbar

より長い例は次のとおりです。

tail -n 3 myfile

-nはオプション3、はオプションのパラメータ、-nmyfileオペランドです。

用語が異なるため、次の文書を見つけることができます。ディスカッションPOSIXの使い方の意味でオペランド。しかし、この意味では、「非オプションの議論」は、2つの用語よりも一般的です。

答え2

問題は、オプション(またはスイッチやフラグなどと呼ばれるもの)もパラメータと見なされることです。実際には、コマンド名自体の後にあるものは、コマンドの引数(シェルで使用される構造(リダイレクトなど)など)を構成します。

プログラム/スクリプトはすべてを引数として受け取り、オプション引数(オプションの引数)は他の引数から分離する必要があります...推測されたでしょう! ...オプションではないパラメータ

したがって、情報ページで言うのは、受信した引数がオプションでwhoない場合は、ログイン情報を照会する基本ファイルの代替と見なすことです。

答え3

私はまだこれが不都合な表現であると考え、壊さないように努力します。彼らが言いたいのは、プロトタイプ宣言に次のような内容が含まれているということです。

 `who' [OPTION] [FILE] [am i]

したがって、「オプションではなく引数が指定されていない場合」と言うと、およびを参照することになり[FILE]ます[am i]

このロジックに従って、「オプションではなく引数が与えられた場合」と言うと、その位置を[FILE]オーバーライドします。[FILE]/var/run/utmp

最後に、「オプションではなく2つの引数が指定されている場合」というこの説明では、[am i]コマンドを実行したばかりのユーザーに関する情報を要求します。

$ who am i
saml     pts/5        2013-10-18 16:29 (:0.0)

-or-

$ who mom likes
saml     pts/5        2013-10-18 16:29 (:0.0)

この説明は適切ですが、「非オプション引数なし」という用語を使用して間違いなく混同しています。

著者のコメントには、次のオプションがあります。

  -a, --all         same as -b -d --login -p -r -t -T -u
  -b, --boot        time of last system boot
  -d, --dead        print dead processes
  -H, --heading     print line of column headings
  -l, --login       print system login processes
      --lookup      attempt to canonicalize hostnames via DNS

  ....

そしてはい/いいえオプションも[FILE]あります。しかし、これらは[am i][mom likes]みんなオプションがあるので、違いはこのツールに限定されています!

答え4

通常オプションではないパラメータ

  • コマンドライン文字列のコマンドに従う
  • -またはで始まらない。--
  • 引数が必要なオプションに従わない。
  • (コマンド文字列の一部である場合) 通常、唯一の必須引数

例:

           option    non-option arg
command  --verbose   /dir/file.txt

または:

          option    argument of -o    non-option arg
command     -o          /dst          /src/file.txt

引数とオプション以外の項目を簡単に区別できますか?いいえ。特定のコマンドがオプションを解析する方法によって異なるため、そのマニュアルを読む必要があります。

            option     argument of -a
command_A    -a        /dir/file.txt

            option     non-option arg
command_B    -a        /dir/file.txt

注:まれなケースではありませんが、オプションではないエントリは-次のように始まります。

      non-option arg   non-option arg
set         --              -a

関連情報