简单来讲,shell是一个执行命令的宏处理(macro processor)器。
术语宏处理器(macro processor)是指将文本和符号扩展到建立更大的表达式的功能。linux
Unix shell能够做为解释器(interpreter)和编程语言使用。shell
看成为命令解释器使用时。shell为用户接口提供了丰富的GNU命令集,如 cd dir ls find ...等实用的命令。编程
看成为编程语言时。shell特性容许将多个命令组合在一块儿,能够建立包含命令的文件,并成为命令自己。
这些新命令在诸如“/bin”的目录中具备与系统命令相同的状态,容许用户或组创建自定义环境来自动化它们的常见任务。异步
shell容许以同步和异步方式执行GNU命令。在接受更多输入以前,shell将等待同步命令完成;异步命令在读取和执行其余命令时,继续与shell并行执行。“重定向”构造容许对这些命令的输入和输出进行细粒度控制。此外,shell容许对命令环境的内容进行控制。
shell还提供了一组内置命令(“builtins”),实现功能不可能或不方便经过单独的实用程序得到。例如,“cd”、“break”、“continue”和“exec”都不能在shell以外实现,由于它们直接操纵shell自己。“history”、“getopts”、“kill”或“pwd”的内置程序能够在不一样的实用程序中实现,但它们更便于做为构建命令使用。后面的部分将描述全部的shell构建。编程语言
与其余编程语言相同,shell也提供了变量,流程控制,引用,函数。ide
定义 | 解释 |
---|---|
POSIX | 一个基于Unix的开放系统标准系列。Bash主要关注POSIX 1003.1标准的外壳和实用程序部分。 |
blank | 一个空格或者制表符 |
builtin | 由shell自己在内部实现的命令,而不是文件系统中的某个可执行程序。 |
control operator | 流程控制语句,执行控制功能的“令牌”。 |
exit status | 命令返回给它的调用者的值。该值限制为8位,所以最大值为255。 |
field | 一个文本单元,它是一个shell扩展的结果。扩展后,当执行一个命令时,结果字段被用做命令名和参数。 |
filename | 用于标识文件的字符串 |
job | 由管道组成的一组过程,以及由它派生的任何进程,它们都在同一个进程组中。 |
job control | 用户能够有选择地中止(暂停)并重启(恢复)进程的机制。 |
metacharacter | 当未被引用时,一个字符将单词分开。元字符是一个“空白”或下列字符之一。'\', '&', ';','(', ')', '<', or '>'. |
name | 由字母、数字和下划线组成的“单词”,以字母或下划线开头。名称被用做shell变量和函数名。也称为“标识符”。 |
operator | “控制操做符”或“重定向操做符”。对于重定向操做符的列表。运算符包含至少一个未被引用的“元字符”。 |
process group | 每一个具备相同进程组ID的相关进程的集合。 |
process group ID | 在其生命周期中表示“进程组”的惟一标识符。 |
reserved word | 一个对shell有特殊意义的词。大多数保留字引入了shell流控制结构,例如“for”和“while”。 |
return status | “退出状态”的同义词。 |
signal | 一种机制,经过该机制能够经过系统中发生的事件的内核来通知进程。 |
special builtin | 一个被POSIX标准分类为特殊的shell内置命令。 |
token | 由shell层考虑单个单元的一系列字符。它要么是一个“单词”,要么是一个“运算符”。 |
word | 由shell做为单元处理的一系列字符。词汇可能不包括未引用的“元字符”。 |