Linux shell编程(一):shell是什么?

什么是shell?

简单来说,shell是一个执行命令的宏处理(macro processor)器。
术语宏处理器(macro processor)是指将文本和符号扩展到创建更大的表达式的功能。

在linux系统中shell介于Linux内核与终端用户之间,让用户通过可以shell来操作内核。

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

Unix shell可以作为解释器(interpreter)和编程语言使用。

当作为命令解释器使用时。shell为用户接口提供了丰富的GNU命令集,如 cd dir ls find ...等实用的命令。

当作为编程语言时。shell特性允许将多个命令组合在一起,可以创建包含命令的文件,并成为命令本身。
这些新命令在诸如“/bin”的目录中具有与系统命令相同的状态,允许用户或组建立自定义环境来自动化它们的常见任务。

Shell可以在交互式模式或非交互式模式下使用。

  • 交互式: 执行命令从键盘键入
  • 非交互试:执行从文件读取到命令

shell允许以同步和异步方式执行GNU命令。在接受更多输入之前,shell将等待同步命令完成;异步命令在读取和执行其他命令时,继续与shell并行执行。“重定向”构造允许对这些命令的输入和输出进行细粒度控制。此外,shell允许对命令环境的内容进行控制。
shell还提供了一组内置命令(“builtins”),实现功能不可能或不方便通过单独的实用程序获得。例如,“cd”、“break”、“continue”和“exec”都不能在shell之外实现,因为它们直接操纵shell本身。“history”、“getopts”、“kill”或“pwd”的内置程序可以在不同的实用程序中实现,但它们更便于作为构建命令使用。后面的部分将描述所有的shell构建。

与其他编程语言相同,shell也提供了变量,流程控制,引用,函数。

shell中的常见名词

定义 解释
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作为单元处理的一系列字符。词汇可能不包括未引用的“元字符”。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章