Shell 术语

下表中的术语和定义对于理解 Shell 很有帮助。


描述
空白 空白是在 LC_CTYPE 类别中定义的空白符类中的一个字符。 在 POSIX Shell 中,空白是制表符或空格。
内置命令 Shell 执行的命令,不对其进行搜索和创建一个独立的进程。
命令 Shell 语言语法中的字符序列。 Shell 读每个命令,并直接地或通过调用独立的实用程序来执行期望的操作。
comment 以井号 (#) 开头的任何单词。 将忽略该单词及其后面的所有字符,直到下一个换行符为止。
标识 可移植字符集中的字母、数字或下划线序列,以字母或下划线开始。 标识的第一个字符绝不能是数字。 标识用作别名、函数和命名参数的名称。
list A sequence of one or more pipelines separated by one of the following symbols: semicolon (;), ampersand (&), double ampersand (&&), or double bar (||). The list is optionally ended by one of the following symbols: semicolon (;), ampersand (&), or bar ampersand (|&).
;
顺序地处理前面的管道符。 Shell 依次执行每个命令,并等待最近一个命令完成。
&
异步地处理前面的管道。 Shell 依次执行每个命令,在后台处理管道而不等待它完成。
|&
异步地处理前面的管道,并建立到父 Shell 的双向管道。 Shell 依次执行每个命令,在后台处理管道而不等待它完成。 通过使用 read -pprint -p 命令,父 Shell 可以读取和写入衍生命令的标准输入和输出。 在任何给定时刻,只能有一个这样的命令活动。
&&
仅当前面的管道返回退出值零 (0) 时,才处理跟在此符号后的列表。
||
仅当前面的管道返回非零退出值时,才处理跟在此符号后的列表。
The semicolon (;), ampersand (&), and bar ampersand (|&) have a lower priority than the double ampersand (&&) and double bar (||). The ;, &, and |& symbols have equal priority among themselves. &&|| 符号的优先级相等。 可使用一个或多个换行符而非分号来定界列表中的两个命令。
注: |& 符号仅在 Korn shell 程序中有效。
元字符 每个元字符都对 Shell 有特殊的含义,并导致字终止,除非引用它。 元字符有:管道符号(|)、“与”符号(&)、分号(;)、小于号(<)、大于号(>)、左括号(()、右括号())、货币符号($)、反引号(`)、反斜杠(\)、右引号(')、双引号(")、换行符、空格字符和跳进字符。 所有括在单引号之间的字符都认为是引用字符,并由 Shell 逐字地解释。 如果没有引用,那么将保留元字符的特殊含义。 (元字符在 C Shell 中也称为解析器元字符。)
参数赋值列表 包含一个或多个 Identifier=Value 格式的字,其中等号(=)左右的空格必须对称。 即,必须使用前导空白和末尾空白或无空白。
注: 在 C Shell 中,参数分配列表的格式为 集合标识 = 值。 等号(=)左右必须有空格。
管道/管道输送 (pipeline) 由管道 (|) 分隔的一个或多个命令的序列。 管道中的每个命令 (可能是最后一个命令) 都作为单独的进程运行。 但是,通过管道连接的每个命令的标准输出成为序列中下一个命令的标准输入。 如果列表用圆括号括起,那么它作为在一个独立的子 Shell 中操作的简单命令执行。

如果保留字 ! 未在管道之前,那么退出状态将是管道中指定的最后一个命令的退出状态。 否则,退出状态是最后一个命令的退出状态的逻辑 NOT 。 换言之,如果最后一个命令返回零,那么退出状态将为 1。 如果最后一个命令返回大于零,那么退出状态将为零。

管道的格式如下:
[!] command1 [ | command2 ...]
注: Bourne shell 的早期版本使用插入标记 (^) 来指示管道。
shell 变量 将值指定给其的名称或参数。 通过输入变量名、等号(=),然后输入值来指定一个变量。 变量名可以通过在变量名前面加上美元符号 ($) 来替换指定的值。 变量对于为长路径名 (例如主目录的 $HOME ) 创建短表示法特别有用。 预定义的变量是其值由 Shell 指定的变量。 用户定义的变量是其值由用户指定的变量。
简单命令 任何顺序的可选参数赋值列表和重定向的序列。 可选地,后跟命令、字和重定向。 它们由 ;|&||&&|& 或换行符终止。 命令名作为参数 0 (由 exec 子例程定义) 传递。 简单命令的值是它的退出状态零(如果它正常终止)或非零(如果它异常终止)。 sigaction , sigvec 或 signal 子例程 包含信号退出状态值的列表。
subshell 作为登录 Shell 程序或当前 Shell 的子 Shell 运行的 Shell。
通配符 也称为模式匹配字符。 Shell 将它们与指定的值关联。 基本通配符为 ?*[set][!set]。 通配符在执行文件名替换时特别有用。
字 (word) 不包含任何空白的字符序列。 字用一个或多个元字符分隔。