Linux平台及应用
潘小玲 郑国华 丁敏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

shell简介

发布时间:2020-02-22 10:12   发布人:潘小玲   浏览次数:729

(1)什么是shell 

Shell是系统的用户界面,提供了用户与内核进行交互操作的-种接口(命令解释器), Shell接收用户输入的命令并把它送入内核执行,在用户与系统之间进行交互。Shell 在Linux 系统中具有极其重要的地位。

 

 

 image.png


(2)Shell的功能

命令解释器是Shell 最重要的功能。Linux 系统中的所有可执行文件都可以作为Shell命令来执行。将Linux的可执行文件进行分类,如下表所示。

Linux系统上可执行文件的分类

类 别

说 明

Linux命令

存放在/bin、/sbin目录下的命令

内置命令

出于效率的考思,将-些常用命令的解释段序构造在Shell内部

实用程序

存放在/usr/bin、/usr/sbin、/usrlocal/bin、/usrlocal/sbin等目录下的实用程序

用户程序

用户程序经过编译生成可执行文件后可作为Shell命令运行

Shell脚本

由Shell语言编写的批处理文件

Shell是如何完成命令解释的呢?

命令解释过程如下:



 image.png

 

 

 

 

 

 

 

 


当用户提交了一个命令后,Shell 首先判断是否为内置命令(由Shell自身负责解释),如果是就通过Shell的解释器将其解释为系统功能调用并转交给内核执行;若是外部命令或实用程序,就试图在硬盘中查找该命令并将其调入内存,再将其解释为系统功能调用并转交给内核执行。在查找该命令时分为两种情况:

用户给出了命令的路径,Shell 就沿着用户给出的路径进行查找,若找到则调入内存,若没找到则输出提示信息。

用户没有给出命令的路径,Shell 就在环境变量PATH所制定的路径中依次进行查找,若找到则调入内存,若没找到则输出提示信息。

此外,Shell 还具有如下功能。

●通配符、命令补全、别名机制、命令历史。

●重定向、管道、命令替换、Shell编程等。

(3)Shell 的主要版本

下表中列出了几种常见的Shell版本。RHEL/CentOS 下默认的Shell是bash。

版本

说明

Bourme Again Shell
  (bash
、bsh的扩展)

bash是大多数Linux系统的默认Shell,bash与bsh完全向后兼容,并且在bsh的基础上增加和增强了很多特性。bash也包含了很多C Shell和Kom   Shell中的优点。bash有很灵话和强大的编程接口,同时又有很友好的用户界面

Kom Shell(ksh)

Kom Shell(ksh)由Dave Korm所写。是UNIX系统上的标准Shell。另外,在Linux环境下有一
  个专门为Linux系统编写的Kom Shell的扩展版本,即Public Domain Korm Shell(pdksh)

tcsh(csh的扩展)

tcsh是C Shell的扩展。tcsh与csh完全向后兼容。但它包含了更多的使用户感觉方便的新特性,其最大的提高是在命令行编辑和历史浏览方面

(4)Shell的元字符

在Shell 中有一-些具有特殊的意义字符,称为Shell 元字符(Shell Metacharacters)。若不以特殊方式指明,Shell 并不会把它们当作普通文字符使用。

下表中简单介绍了常用的Shell元字符的含义。

元字符

含   义

·

代表任意字符串

?

代表任意字符

/

代表根目录或作为路径间隔符使用

转义字符。当命令的参数要用到保留字时,要在保留字前面加上转义字符

<Enter>

续行符。可以使用续行符将-一个命令行分写在多行上

$

变量值置换,如$PATH表示环境变量PATH的值

'

在'... '中间的字符均被当作文字处理。指令、文件名、保留字等都不再具有原来的意义

"

在"..."中间的字符公被当作文字处理并允许变量值置换

`

命令替换,置换`...`中命令的执行结果

输入重定向字符

输出重定向字符

|

管道字符

&

后台执行字符。在-个命令之后加上字符“&"。该命令就会以后台方式执行

;

分割顺序执行的多个命令

()

在子Shell中执行一组命令

{}

在当前Shelll中执行一组命令

!

执行命令历史记录中的命令

~

代表登录用户的宿主目录(自家目录)