![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=1739250447-wTqd3gP8tEPvcd2GFQpn34GnngaMUalu-0-042123573c785eab2b86aa5d3100fc23)
图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=1739250447-1gEWyTNRmCN1iGsz30OsyB4Ng52oUnBU-0-d0680dbb19b40f0f6947f72bbed98cd0)
图2-2描述了Shell是如何完成命令解释的。
![](https://epubservercos.yuewen.com/36AABB/29686817007520806/epubprivate/OEBPS/Images/33_01.jpg?sign=1739250447-qPU0fKkPpHBNn2nB9BpLfTQ6bn5Z2LkF-0-9dae04ebcc3121e20e0efb8695b40637)
图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=1739250447-exCJw1L30pwpXjBA19H5z09ZHD3A0Dta-0-bc84b73e1f37d91612e05d28e5986d60)
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=1739250447-rMwyBJY92NTlkZygDyktVz0oHtS2b5ip-0-1c21e7c06f7149b1421f45bc85b66526)