在命令行中,我经常使用“简单”命令,例如
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─────────┘
命令名称(不是重定向或变量赋值并且在别名已展开之后的命令行的第一个单词或标记)。
命令的标记、单词或参数。来自 man bash:
word:被 shell 视为单个单元的字符序列。也称为令牌。
一般:参数
命令行。
的串联二带有 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────────────────────┘
其中(除了上面的数字之外):
- 重定向。
- 变量赋值。
- 简单的命令。
这并不是命令行可能具有的所有元素的详尽列表。对于这个简短的答案来说,这样的列表太复杂了。