![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=1739135144-7po9o8OCjRn1nxz6CEAM4qxRwsDTJGH8-0-f4448c4bd5ca6ae85e7d80ac8c34e407)
图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=1739135144-XalrPfQDJaufTgcLQO2SpUxUqJtylfB7-0-8b05ed0ab4ca904642a3e3cbbd53a619)
图2-2描述了Shell是如何完成命令解释的。
![](https://epubservercos.yuewen.com/36AABB/29686817007520806/epubprivate/OEBPS/Images/33_01.jpg?sign=1739135144-9COr9t742q8CTyhwoVlFVNVg2MlPYcP9-0-4fa753f355d90c874e802ff048ab93e4)
图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=1739135144-8rnmWWYX47GrwY33vLwxN72W5Ow2ftAc-0-fd887bc1e1f2c22dd5088d2401067891)
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=1739135144-CH0hLEbnAsgwHqVT3c7fS97imMcYVY4m-0-629ee2f80ecef65c67002a1b4097f994)