![Linux操作系统与服务配置](https://wfqqreader-1252317822.image.myqcloud.com/cover/765/31729765/b_31729765.jpg)
3.3.4 Shell的常用功能
RHEL 6.5默认的Shell是Bash(Bourne Again Shell),它除了担任用户与Kernel间沟通的管道之外,还具备以下特性:
①交互式处理(Intercative Processing)。
②命令补全功能(Command completion function)。
③查阅历史记录命令(history)。
④别名(Alias)功能。
⑤输入/输出重新导向(Input/Output Redirection)。
⑥管道(Pipes)。
1.交互式处理
自从用户登录系统开始,Shell就出现提示符号(视Shell与用户身份的不同会有不同的符号),并且等待用户输入命令。接收用户输入的命令后,按命令的不同来执行,执行完毕后,Shell会将结果回传给用户,并且两次显示提示符号,以等待用户的下一次输入。一直持续到执行exit或按【Ctrl+D】组合键注销Shell才会结束,这种沟通方式称为交互式处理(Intercative Processing)。
2.命令补全功能
命令补全功能(Command completion function)是指用户输入命令时,并不需要输入完整的命令,系统会自动找出最符合的名称,这种功能可以节省经常输入长串命令的时间。
例如:在系统中有很多以sys开始的命令,如果不记得完整的命令,只要输入开头的几个字母,快速按两次【Tab】键,就会出现所有以sys开始的命令,当输入syst,然后按【Tab】键系统就会自动补足完整的命令system(还字符串必须是唯一的),然后可以按照这种方式补充到最终命令。
【例3.5】命令补全功能一。
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00058001.jpg?sign=1739428064-7To8pE4t9Xd3EavKNOop8UWgM2TBBlKt-0-6cbc0fe309421efbde97c4574d8721c6)
【例3.6】命令补全功能二。
[root@localhost /]# system- //只需要输入到syst,然后按一次【Tab】键,后面自动出现em-
3.查阅历史记录命令
①每当在Linux系统上输入命令并按下【Enter】键后,这个命令就会存放在命令记录表中,根据bash的默认值,这个记录表就是~/.bash_history文件。这个文件的保存记录定义在HISTSIZE环境变量中,默认的记录为1000笔,可以直接打开~/.bash_history文件,或者输入history | less命令来查看目前的命令记录。
【例3.7】history命令的一种用法。
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00059001.jpg?sign=1739428064-m5G6lvspaS0TWunAYyGYLQmEGQqfXj6Y-0-b906d614ba257250459d4db9bd8c347d)
②可以使用history n命令查阅最近的命令记录,如最近3笔记录的范例。
【例3.8】history命令的又一种用法。
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00059002.jpg?sign=1739428064-q6ETSszJnnhafnI5DSEPFQtoXZo2tonz-0-cc88dbaac4c99a1cb244941b9009004e)
③还有一种执行命令最快的方式就是使用命令记录号码,在命令记录中,每个命令都会赋予一个记录号码,可以利用这个号码来指定欲执行的旧命令,使用这个方法的语法为“!nnn”。
【例3.9】使用“!”和命令序号执行命令。
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00059003.jpg?sign=1739428064-sR4OBq7zRF6tvPgkzgnpjYWDdUw86cfK-0-ef069e8099d577e3f9804a6f5e53944e)
以上命令!!相当于执行了ls。
④别名(Alias)功能:指提供用户自行定义为简单的字符串,以替换复杂的命令选项,或者多个命令的连续组合,这可为用户量身定做自己习惯的操作命令。
例如,在DOS系统中通过dir命令显示目录中的内容,而在Linux中必须输入“ls–a”。若希望以dir替换“ls–a”,可以使用别名的功能。
【例3.10】alias命令的使用一
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00060001.jpg?sign=1739428064-0VvIk5C23Phbq0BhdwOsBmusgIfPm7QK-0-68035a2aa1397ec23148bf60e5914211)
若想知道目前系统中所有的别名命令有哪些可以直接使用Alias命令,而不需要任何参数,可以使用如下命令。
【例3.11】alias命令的使用二。
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00060002.jpg?sign=1739428064-jSN3ouIrbf9U6zgVmIB7JSq2Z0tKJlMB-0-25ca272d490a764838f7b2a0a38b8a91)
若想取消刚才定义的别名,使用unalias命令来取消此别名。
【例3.12】unalias命令的使用。
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00060003.jpg?sign=1739428064-B5n7KQW1FU8ouWqkoxO0RjKIeapcyH6f-0-48b6fdbd6413f2898034e468f622a03e)
⑤输入/输出重新导向。Linux中提供的输入/输出重新导向(I/O Redirection)功能提供了一套规则,让用户将执行所需的输入(<)或执行所需的输出(>),由标准的输入装置(stdin)键盘,或者标准的输出装置(stdout)显示器,重新导向到文件、打印机或其他装置(/dev/null)。
例如,命令cat/file1.txt>/file2.txt是将cat/file1.txt的输出结果导向文件(file2.txt),而不是显示器(stdout)。另外,命令是mail–s Jack<Letter.txt表示邮件并不是由键盘(stdin)输入,而是导向为由文件Letter.txt输入。
【例3.13】将命令的输出保存到文件,而不是显示器。
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00060004.jpg?sign=1739428064-gllcTuJ7ZzwfEdUCtTpQRuxHNrL74k9R-0-7fd2a3f70a48a72060be2be7027f30f2)
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00061001.jpg?sign=1739428064-mmbVMRYfYdL4nFhkgyKgngtjeh37PFH8-0-807376f68d339246a25f194f862ec9c6)
【例3.14】将文件aaa的内容作为命令的输入。
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00061002.jpg?sign=1739428064-OTGnUPg6FWGE8OsJGIxvsA7w6FkPbLyZ-0-4fc38903bf0b8bfd4ea8c8167dac5927)
⑥管道。管道(Pipes)的功能可以将数个简单的命令集合在一起来执行一个较复杂的工作,除了第一个和最后一个命令之外,每个命令的输入都是前一个命令的输出,而每个命令的输出也将成为下一个命令的输入。
【例3.15】管道功能示例。
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00061003.jpg?sign=1739428064-oOm7XSfC8ZnUDRImSrMFwxRGLHNFedXu-0-f90ae03ac7b3b17647505751688465db)