一、命令的主要分为:
(1)内建命令:集成在shell上的命令
(2)外部命令 :在硬盘中有路径存储的命令
(3)alias:别名,将命令/命令+选项/命令+选项+参数另起一个名字存储,个性化定制。
(4)hash:使用过的命令将其路径缓存。
二、为什么有内建命令?和外部命令有什么不同?
1. CentOs7 的shell是bash;在Linux使用时有一些命令的使用频率较高,若是总是从硬盘数据中读取比较浪费时间且占用资源。所以bash把这些使用频率高的命令集成到 shell 当中,加快调用,称为内建命令。
2.所以内建命令在就是为了加快外部命令调用而在shell中的备份。即每个内建命令都在外部命令(硬盘上)存在的有。
验证:内部命令是把命令执行文件集成到shell中,而不是开机时读取到内存中:
A. pwd是内部命令,把其外部命令的执行文件替换成ifconfig,即执行外部的pwd时相当于执行ifconfig。
B. 执行pwd显示ifconfig执行结果
查看pwd类型:#} type pwd
pwd is a shell builtin
禁掉pwd在shell上的激活:#} enable -n pwd
查看pwd路径:#} type pwd
pwd is hashed (/usr/bin/pwd)
查看ifconfig类型:#} type ifconfig
ifconfig is hashed (/usr/sbin/ifconfig)
清掉ifconfig的hash:#} hash -d ifconfig
用ifconfig文件覆盖pwd命令文件:#} cp /usr/sbin/ifconfig /usr/bin/pwd
结果:# pwd 显示ifconfig的运行结果
这个地方忘截图了,感兴趣可以自己试试!!
C. 在pwd内部命令被禁时:运行pwd,是ifconfig效果,是运行的外部的文件。
D. 唤醒pwd的内部激活时,运行pwd是 显示当前工作目录,运行的是集成在shell中的文件。
所以内建命令在shell中是已经集成好的,而不是开机时从硬盘中调取缓存的
三、查看命令类型和命令调用优先级:type
1.type加上 命令名 :查看命令类型
截图解释:方块1.查看命令ls类型,结果是ls -color的别名。
方块2.查看命令pwd类型,是shell的内建命令。
方块3.查看命令touch类型,外部命令位置在/usr/bin/touch; 运行了touch 命令后,再次查看显示 已被hash(缓存)。
四、 内建命令——enable
注意:当禁用了内建命令时,此命令的外部路径就被激活使用,下图为echo举例:
1 . enable -n :没有被禁用的内建命令。
2. Type echo :echo是内建命令。
3.enable -n echo :禁掉echo在内建的激活。
4.Type echo :echo外部路径被激活。
五、别名 ——alias
六、命令路径缓存——hash
注意:只缓存路径。
在没有清楚命令缓存,改变命令文件的路径,命令将不能调用。
七、命令运行优先级:
先:alias>shell内建>hash>外部路径