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

什么是shell?

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

在linux系统中shell介于Linux内核与终端用户之间,让用户经过能够shell来操做内核。

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

Unix shell能够做为解释器(interpreter)和编程语言使用。shell

看成为命令解释器使用时。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也提供了变量,流程控制,引用,函数。ide

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做为单元处理的一系列字符。词汇可能不包括未引用的“元字符”。
相关文章
相关标签/搜索