我刚刚学习命令行处理,希望有人能确认我如何解释以下语句。在书中我正在阅读命令行处理的第一步是:
- 将命令拆分为由固定元字符集分隔的标记:空间,标签,新队,
;
,(
,)
,<
,>
,|
, 和&
。标记的类型包括单词、关键字、I/O 重定向器和分号
我对命令的看法是否正确:
ls | more
ls
和more
是标记,字符pipe
是meta character
分隔两个标记的符号?
我有点困惑,因为它接着说<
和>
are meta characters
,但随后又说 token can be I/O directors
。
答案1
这不是一个很好的解释。 A代币是形成单词或标点符号的字符序列。像<
和 之类的字符|
也是令牌的一部分。您可以将它们称为元字符,但这不是有用的术语。基本规则是:
- 空格不是令牌的一部分,用于分隔令牌。
- 令牌由普通字符或运算符字符组成
()<>&|;
,但不能同时由两者组成。例如,foo<@a&>b
由标记foo
(普通)、<
(运算符)、@a
(普通)、&>
(运算符) 和组成b
。
然后还有关于引用的附加规则:特殊字符如果被引用就会失去意义,根据引用的类型有不同的规则。例如,foo'&&'bar\|qux
是具有字符序列 的单个标记foo&&bar|qux
。