首页 理论教育 内置与外部命令掌握-实用Linux Shell编程

内置与外部命令掌握-实用Linux Shell编程

时间:2023-11-18 理论教育 版权反馈
【摘要】:要查看某一条内置命令的帮助,运行help加该内置命令即可。表3-1 Bash主要内置命令简介与内置命令相对的是外部命令,外部命令不是Bash自带的,而是安装在Linux系统某个地方,是“看得见、摸得着”的命令。另外,有些命令既是内置命令也是外部命令,或者说Linux安装了与Bash内置命令同名的某些外部命令,例如echo就是这样的命令。

内置与外部命令掌握-实用Linux Shell编程

内置命令,简单地说,就是Bash自带的命令,也叫内建(built-in)命令。要查看内置命令的列表,运行命令help即可。help本身就是一条内置命令。下面是在Ubuntu系统下的运行结果的部分内容:

978-7-111-48202-4-Chapter03-1.jpg

前面提到过的cd、echo和pwd出现在上面的列表里,表明它们是Bash的内置命令。要查看某一条内置命令的帮助,运行help加该内置命令即可。例如,查看cd的帮助:

978-7-111-48202-4-Chapter03-2.jpg

help命令有三个选项,选项-d用于显示命令的简要功能介绍(short description),例如:

978-7-111-48202-4-Chapter03-3.jpg

使用选项-s,将显示命令的简要的语法格式(short usage synopsis),例如:

978-7-111-48202-4-Chapter03-4.jpg

使用选项-m,将显示命令的手册页(manual page)形式的用法解释,例如:

978-7-111-48202-4-Chapter03-5.jpg

978-7-111-48202-4-Chapter03-6.jpg

前面提到,运行help可以得到Bash内置命令列表,准确地说,是Bash的内置命令和关键字(keyword)的列表。例如,for、while、until、do和done等,是组成循环的关键字;if、then、elif、else和fi等,是组成条件判断的关键字。如果将这些关键字称为内置命令是不完全准确的,这一点,读者学习循环和判断命令的章节之后会有所体会。关键字也叫保留字(reserved word)。查询关键字的帮助信息,同样是help加上它的名字,例如:

978-7-111-48202-4-Chapter03-7.jpg

Bash主要内置命令的简介见表3-1。

表3-1 Bash主要内置命令简介

978-7-111-48202-4-Chapter03-8.jpg

与内置命令相对的是外部命令,外部命令不是Bash自带的,而是安装在Linux系统某个地方,是“看得见、摸得着”的命令。例如,ls命令不在内置命令的列表里面,使用which命令可以查询到:(www.xing528.com)

978-7-111-48202-4-Chapter03-9.jpg

再看看vi命令在哪里:

978-7-111-48202-4-Chapter03-10.jpg

不同的Linux系统里,有些命令的具体安装位置可能会不一样。另外,有些命令既是内置命令也是外部命令,或者说Linux安装了与Bash内置命令同名的某些外部命令,例如echo就是这样的命令。在内置命令列表里可以看见echo,在外部命令中也能找到它:

978-7-111-48202-4-Chapter03-11.jpg

如果运行了一条echo命令,是内置的echo执行了呢,还是外部的echo执行了呢?答案是内置的echo执行了,因为内置命令的优先级高于外部命令(有关命令的优先顺序,见3.6.1节)。如果带上外部命令的全路径,那么外部命令得到执行,例如:

978-7-111-48202-4-Chapter03-12.jpg

第1章介绍了查看命令帮助的方法,实际上说的是查看外部命令帮助的方法。运行echo--help时,由于使用的是内置echo命令,运行的结果是打印出了字符串--help,而没有看到它的帮助信息:

978-7-111-48202-4-Chapter03-13.jpg

带上外部echo命令的全路径,可以查看到外部echo命令的帮助:

978-7-111-48202-4-Chapter03-14.jpg

978-7-111-48202-4-Chapter03-15.jpg

既然存在内置命令与外部命令同名的情况,那么同名的它们在用法上有区别吗?就常用的选项和参数而言几乎没有差别,至少是没有大的区别。把内置echo命令的帮助信息(运行help echo),与外部echo命令的帮助信息(运行/bin/echo--help)对比一下,可以发现,差别很小。类似地,pwd是Bash的内置命令,同时,Linux系统也安装了外部的pwd:

978-7-111-48202-4-Chapter03-16.jpg

同样,运行help pwd,再运行/bin/pwd --help,对比一下,就知道,内置命令pwd与外部命令/bin/pwd的主要选项-L和-P的功能没有差别。外部命令/bin/pwd的长选项--logical和--physical分别相当于-L和-P,内置pwd命令不支持这两个长选项。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈