コマンドラインの用語:コマンドのこれらの部分は何と呼ばれていますか?


21

コマンドラインでは、次のような「単純な」コマンドをよく使用します。

mv foo/bar baz/bar

しかし、私はこれのすべての部分を何と呼ぶべきかわかりません:

┌1┐ ┌──2───┐
git checkout master
│   └──────3──────┘
└───────4─────────┘

私は(私は)1がコマンドであり、2が引数であることを知っており、おそらく3を引数リストと呼びます(それは正しいですか?)。

しかし、私は4と呼ぶべきか分からない。

より複雑な「コマンド」はどのようにラベル付けされますか?

find transcripts/?.? -name '*.txt' | parallel -- sh -c 'echo $1 $2' {} {/}

1,2,3,4を何と呼ぶか​​、たとえば上記のこの「コマンド」の各部分を何と呼ぶか​​を分解する回答をいただければ幸いです。

ここには含まれていない、他に類を見ない/驚くべきことについても学ぶことは素晴らしいことです。


1
およびのmanページ、特に概要セクションをご覧になりましたか?gitfind
fpmurphy

4
あなたはgitのためのmanページを見て、見つける必要があり質問がとは何の関係もないようですのでgitまたはfindLinuxの場合、むしろ一般的な用語。
肥満児RIGH

で、bashのmanページによるとA | BA | BあるパイプラインAそしてBあるコマンド(それは、このコマンドでちょうど最初の世界と同じ名前を持つことを残念です)。私は最初の引数を実行可能ファイルと呼ぶかもしれませんが、私に同意するソースを見つけることができません。
肥満児RIGH

4
文脈ではgit checkout ...checkoutあるサブコマンド、およびの文脈ではsh -c ...-cあるオプション
-wjandrea

@JoLはそれを指摘してくれてありがとう。あなたは正しいと思います、私はそれを編集しました。それは私がいるので、私はそれを正しく行うにしようとしたいくつかの4倍のように、そのセクションを再書いたのです
theonlygusti

回答:


33

各部分の共通名は次のとおりです。

┌1┐ ┌──2───┐
git checkout master
│   └──────3──────┘
└───────4─────────┘
  1. コマンド名(コマンドラインの最初の単語またはトークンであり、リダイレクトまたは変数の割り当てではなく、エイリアスが展開された後)。

  2. コマンドのトークン、単語、または引数。man bashから:

    word:シェルによって単一のユニットと見なされる一連の文字。トークンとも呼ばれます。

  3. 一般的に:引数

  4. コマンドライン。

2つの単純なコマンドとa の連結|は、パイプシーケンスまたはパイプラインです。

┌─1┐ ┌──────2──────┐ ┌─2─┐ ┌──2──┐   ┌──1───┐ ┌2┐┌2┐┌2┐┌────2─────┐ ┌2┐ ┌2┐
find transcripts/?.? -name '*.txt' | parallel -- sh -c 'echo $1 $2'  {} {/}
│    └────────────3──────────────┘            └────────────3──────────────┘
└───────────────────────────────────4─────────────────────────────────────┘

リダイレクトと変数の割り当てもあることに注意してください:

┌──5──┐ ┌1┐ ┌─2─┐ ┌─2─┐   ┌───6──┐ ┌1┐ ┌─5─┐
<infile tee file1 file2 | LC_ALL=C cat >file
└─────────7───────────┘   └───────7────────┘
└─────────────────────4────────────────────┘

場所(上記の数字以外):

  1. リダイレクション。
  2. 変数の割り当て。
  3. シンプルなコマンド。

これは、コマンドラインに含まれる可能性のあるすべての要素を網羅したリストではありません。このようなリストは、この短い答えには複雑すぎます。


2
POSIXの用語では、あなたが呼んパイプであるパイプシーケンスまたはパイプライン(パイプラインは、主要なオプションの持つことができますが!、そのステータスを否定するが)。パイプは、パイプラインを実装するためにほとんどのシェルで使用されるIPCメカニズムを参照します(パイプラインはパイプを使用する必要はありません。ksh93は、たとえば一部のシステムでは代わりにソケットペアを使用します)。一部のシェルにはのようなキーワードがありtimenoglob代わりに、または!ここに追加して使用できます。
ステファンシャゼル

1
私見、これらのことは引数と呼ばれます-私はこの文脈でのトークンという言葉は「バッシュの文法の原子単位」を意味すると思います。ここで、トークンという用語は、シェルコマンドラインのコンテキストにのみ存在し、プログラムの実行のコンテキストには存在しません。「これらはプログラムトークンです」と言うのは少し奇妙ですが、「コマンドラインの2番目のトークンは$ test」と言うのはそれほど奇妙ではありません。で区別が生じますがcat $file、ここでは$fileトークンと言いますが、file のは引数です。
肥満児RIGH

1
@PeterCordesあなたは正しいです。<<< "…"は引数であり、リダイレクトではありません。それはまだ行のトークンです。混乱させて申し訳ありません。
アイザック

1
@TOOGAMこれらは標準の定義とは正反対です。呼び出し元が提供するものは引数です。cf. 「仮パラメータ」、またはこのSO質問
マイケル・ホーマー

1
@TOOGAM 「私が見る何がパラメータです」。うーん、あなたは正しいと思う。POSIX仕様によると:「シェルは関数(関数定義コマンドを参照)、ビルトイン(特別なビルトインユーティリティを参照)、実行可能ファイル、またはスクリプトを実行し、引数の名前を1からnまでの番号の位置パラメーターとして与えます。およびコマンド番号(またはスクリプト内の関数の場合はスクリプト名)に0の番号が付けられた位置パラメーターとして(コマンドの検索と実行を参照)。私の防衛のために、それが呼ばれているが、私は...これらすべての年が間違っていたargv
肥満児RIGH

15

上記の@isaacの答えは良いようです。

これをいくつかのソースで拡張したいと思います。

私は推測POSIX標準のいくつかの意味でかもしれないが考慮される標準的な。他のソースはman bashおよびかもしれませんman proc

┌1┐ ┌──2───┐
git checkout master
│   └──────3──────┘
└───────4─────────┘

POSIXは次のことを提案します。

  1. あるコマンド名(でも、この文書が使用する場所でコマンドけれども、ではなくコマンド)
  2. 引数
  3. 引数
  4. コマンド(ただしman procコマンドラインを使用)

さらに多くの複雑なコマンドの用語もあります。

私はコマンドがかなり曖昧だと思うので、おそらくコマンド名コマンドラインという用語は明確にするのに良いでしょう。


procとは何ですか?私はそれを聞いたことがありません。
theonlygusti


5
+1この回答が最も気に入っています。(この特定のコンテキストでは、2サブコマンドですが、通常ははい、引数です)。
クバンチク

@theonlygusti procは、カーネルの内部状態に関する情報を提供する特別な目的のファイルシステム(ファイルのコレクション)です。私はそれがプロセスを表していると信じています(プロセス以外のことに関する情報を提供するsysfsも参照 )。関連する理由はカーネル開発者によって書かれているので、彼らが使用する言語を反映しているかもしれません。
ライ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.