命令行术语:命令的这些部分叫什么?

命令行术语:命令的这些部分叫什么?

在命令行中,我经常使用“简单”命令,例如

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

各部分的通用名称如下:

┌1┐ ┌──2───┐
git checkout master
│   └──────3──────┘
└───────4─────────┘
  1. 命令名称(不是重定向或变量赋值并且在别名已展开之后的命令行的第一个单词或标记)。

  2. 命令的标记、单词或参数。来自 man bash:

    word:被 shell 视为单个单元的字符序列。也称为令牌。

  3. 一般:参数

  4. 命令行。


的串联带有 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

@isaac 上面的答案似乎不错。

我想用一些来源来扩展这一点。

我猜POSIX 标准在某种意义上可能会被考虑典范。其他来源可能是man bashman proc

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

POSIX 建议:

  1. 是个命令名称(而不是命令,尽管本文档在某些地方使用了命令)
  2. 争论
  3. 论点
  4. 命令(虽然man proc使用命令行

它还包含许多更复杂命令的术语。

我认为命令相当模糊,所以也许这个术语命令名称命令行有助于清晰。j

相关内容