web-dev-qa-db-ja.com

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

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

mv foo/bar baz/bar

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

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

私(と思います)1はコマンドであり、2は引数であり、おそらく引数リスト(あれは正しいですか?)。

しかし、何を呼び出すかわかりません4

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

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

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

私がここに含めなかったユニークで驚くべき他のことについても学ぶのは素晴らしいことです。

21
theonlygusti

各パーツの一般的な名前は次のとおりです。

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

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

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

  3. 一般的に:引数

  4. コマンドライン。

two|を使用した単純なコマンドの連結は、パイプシーケンスまたはパイプラインです。

┌─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. シンプルなコマンド。

これは、コマンドラインに含めることができるすべての要素のリストではありません。そのようなリストは、この短い答えには複雑すぎます。

33
Isaac

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

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

POSIX標準 はある意味で canonical と見なされるかもしれません。他のソースはman bashおよびman proc

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

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

  1. コマンド名です(このコマンドではなく、このドキュメントでもコマンドを使用しています)
  2. 引数
  3. 引数
  4. コマンド(ただし、man procコマンドラインを使用します

また、より複雑な多くのコマンドの用語もあります。

コマンドはかなり曖昧だと思うので、コマンド名コマンドラインclarity.jに適しています

15
Att Righ