![Linux应用基础教程(基于CentOS 7)](https://wfqqreader-1252317822.image.myqcloud.com/cover/913/50417913/b_50417913.jpg)
2.1 Shell和命令基础
2.1.1 Shell简介
1. 什么是Shell
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器),Shell接收用户输入的命令并把它送入内核执行,在用户与系统之间进行交互。Shell在Linux系统中具有极其重要的地位,如图2-1所示。
![](https://epubservercos.yuewen.com/36AABB/29686817007520806/epubprivate/OEBPS/Images/32_01.jpg?sign=1739135182-a2QkbAh5yW3SLiUq6L9PzVFRGn9vzZdX-0-960d2524e58ca596f990a90515f21b4a)
图2-1 Shell在Linux系统中的地位
2. Shell的功能
命令解释器是Shell最重要的功能。Linux系统中的所有可执行文件都可以作为Shell命令来执行。将Linux的可执行文件进行分类,如表2-1所示。
表2-1 Linux系统上可执行文件的分类
![](https://epubservercos.yuewen.com/36AABB/29686817007520806/epubprivate/OEBPS/Images/32_02.jpg?sign=1739135182-z4uikOkxrrujRjcDTYTG5yE5w2psJP3u-0-cd03a8720776aecc153a0ebda210d6c3)
图2-2描述了Shell是如何完成命令解释的。
![](https://epubservercos.yuewen.com/36AABB/29686817007520806/epubprivate/OEBPS/Images/33_01.jpg?sign=1739135182-PE8nmhKpX6OaqfrWJJE8MtDQ0NkPISIk-0-a41e039e3f74f69561740ad219c36395)
图2-2 命令解释过程
当用户提交了一个命令后,Shell首先判断是否为内置命令(由Shell自身负责解释),如果是就通过Shell的解释器将其解释为系统功能调用并转交给内核执行;若是外部命令或实用程序,就试图在硬盘中查找该命令并将其调入内存,再将其解释为系统功能调用并转交给内核执行。在查找该命令时分为两种情况:
(1)用户给出了命令的路径,Shell就沿着用户给出的路径进行查找,若找到则调入内存,若没找到则输出提示信息。
(2)用户没有给出命令的路径,Shell就在环境变量PATH所制定的路径中依次进行查找,若找到则调入内存,若没找到则输出提示信息。
此外,Shell还具有如下功能。
●通配符、命令补全、别名机制、命令历史等。
●重定向、管道、命令替换、Shell编程等。
3. Shell的主要版本
表2-2中列出了几种常见的Shell版本。RHEL/CentOS下默认的Shell是bash。
表2-2 Shell的不同版本
![](https://epubservercos.yuewen.com/36AABB/29686817007520806/epubprivate/OEBPS/Images/33_02.jpg?sign=1739135182-YYhKy4oDeY4Dts9z9hHa6Yfkp215QXK9-0-279cc62f360128bd0815d692177d1510)
4. Shell的元字符
在Shell中有一些具有特殊意义的字符,称为Shell元字符(Shell Metacharacters)。若不以特殊方式指明,Shell并不会把它们当作普通文字符使用。
表2-3中简单介绍了常用的Shell元字符及含义。
表2-3 常用的Shell元字符及含义
![](https://epubservercos.yuewen.com/36AABB/29686817007520806/epubprivate/OEBPS/Images/34_01.jpg?sign=1739135182-CbkOnlXdwiWFzksAMNHzGkDLed51linY-0-3854f4b081a07619cc35bb986d86dbfb)