![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=1738882148-gVtRUXd3NLvuC5RrZbEa6Ttq8x60WEhr-0-a9c8837d6ef559d2b9ec70d90c1d8b79)
【例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=1738882148-ezgFyhFqq1aQC0mTwqsS4aU3fYL52N6B-0-85eebebb6bd6277436290954127ab8aa)
②可以使用history n命令查阅最近的命令记录,如最近3笔记录的范例。
【例3.8】history命令的又一种用法。
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00059002.jpg?sign=1738882148-XiVckF061uw9RmjerTHZcSJ88Kx3khTh-0-2657e9867ef76cb0f9ac6a9675be6932)
③还有一种执行命令最快的方式就是使用命令记录号码,在命令记录中,每个命令都会赋予一个记录号码,可以利用这个号码来指定欲执行的旧命令,使用这个方法的语法为“!nnn”。
【例3.9】使用“!”和命令序号执行命令。
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00059003.jpg?sign=1738882148-U0n8TsrGpwxZSwGEhGVuQpxaQrxLMeRl-0-1a543cb0fd467d1d717c05eaf5d57227)
以上命令!!相当于执行了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=1738882148-5TZJOxIT9MAlKFQsSBgzlwPHAPGKBFnn-0-c8c134cc0f00280928ad338249744881)
若想知道目前系统中所有的别名命令有哪些可以直接使用Alias命令,而不需要任何参数,可以使用如下命令。
【例3.11】alias命令的使用二。
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00060002.jpg?sign=1738882148-px6FD1ZWZTF0tekjOpQRJMESANFtdExs-0-94eb851a3dd05987292b2506c7bb2456)
若想取消刚才定义的别名,使用unalias命令来取消此别名。
【例3.12】unalias命令的使用。
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00060003.jpg?sign=1738882148-THmPRBL3nNbAOmt4xOSSAvsc1FByL5cU-0-bd016ebd89a50e3c37296d6a60e63d3a)
⑤输入/输出重新导向。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=1738882148-hth91u0lbcvFpoFQMCi0lZVBDGCrKRp8-0-be7dd9ffa39f49ba5b338df5b6bf44e3)
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00061001.jpg?sign=1738882148-7cJcMyZx00sV6gYh9XeT7KCmXeZshYnL-0-aaee6f407b04e3b1bd094475641663cb)
【例3.14】将文件aaa的内容作为命令的输入。
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00061002.jpg?sign=1738882148-F2qCo69LMq3Vov6J1MnVlNaNShbPoVcW-0-977f2197f055f3f906051a76e1640d3a)
⑥管道。管道(Pipes)的功能可以将数个简单的命令集合在一起来执行一个较复杂的工作,除了第一个和最后一个命令之外,每个命令的输入都是前一个命令的输出,而每个命令的输出也将成为下一个命令的输入。
【例3.15】管道功能示例。
![](https://epubservercos.yuewen.com/677381/17180254004509306/epubprivate/OEBPS/Images/img00061003.jpg?sign=1738882148-Fqz7cQNRlj9M8vkmoZic0OquOxtmccyc-0-10a0b62efc56ce76156d128b1038c1bd)