一丶liunx分类
linux命令可大致分为三类 内置命令,外部命令及alias命令(别名)(可通过type comment来查询是什么命令)
1 内置命令(builtin),内置命令实际上是shell程序的一部分,包含一些比较简练的liunx系统命令,由shell程序识别并在shell程序内部完成运作。
![](https://s1.51cto.com/images/blog/201801/11/615220caf7380fa086f530a5f7bc1198.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) (注:此为type查询的内置命令)
查询所有激活的内置命令 可直接输入enable来进行
- [root@centos7 ~]# enable
enable .
enable :
enable [
enable cd
enable bg
。。。 。。。
还可以将内置命令禁用,如 enable -n comment (**注:comment代指某一命令,以下皆同)
![](https://s1.51cto.com/images/blog/201801/11/661b3b520427ec5bd997ba0bba8fcda4.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
显示所禁用的内部命令 enable -n
![](https://s1.51cto.com/images/blog/201801/11/ff29fbe317e13b80cc4e8d7e7fc3b9e3.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
若想重新启用禁掉的内置命令可 enable comment
![](https://s1.51cto.com/images/blog/201801/11/d464fcb038f30a510d39a63d157bd342.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2 外部命令,外部命令是linux系统中的实用程序部分,由于包含的程序量过大,并不会一开机就被加载入系统内存中,而是在需要时才会被调入内存。(通过shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。)
![](https://s1.51cto.com/images/blog/201801/11/73b4fcb75d09dd63afc42b6dd9c8cc58.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) (注:此为查询的外部命令)
外部命令分为hash缓存命令和按路径执行,凡是被执行过的命令会被调入内存,而这个内存便是hash,hash记录了你最近所有执行过的外部命令。
显示所有被缓存的命令路径 hash
![](https://s1.51cto.com/images/blog/201801/11/83a2cb4e3f08c12efa43019b1a52f3a7.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
清空所有的缓存 hash -r
![](https://s1.51cto.com/images/blog/201801/11/aef8ba508e0244a53e3b0ea016e13556.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
按路径执行又可分为直接输入相关路径执行和输入命令后自动搜索路径执行,其搜索路径的目录可用echo ¥PATH查看
![](https://s1.51cto.com/images/blog/201801/11/45f8390b14ac5efaca797285054afd0f.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
上述图为例,以冒号为分隔 从左到右依次搜寻,搜到后直接缓存至hash并执行,若有两个文件夹同时存在一个命令,则默认使用第一个搜寻到的命令执行。
3 alias,alias命令指的是用户设置命令的别名,以简写命令,提高操作效率。
显示所有的别名信息可 alias
若想设置别名,可 alias 别名='command -选项 参数' 如:
![](https://s1.51cto.com/images/blog/201801/11/f37d603e473797a9e9a36e48ac07c6c4.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
若想取消所设置的别名,可 unalias+别名 进行取消
![](https://s1.51cto.com/images/blog/201801/11/dfc56fd9132a6f715233045837bf4341.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
二丶优先度
若假设一条命令同时在内置命令,外部命令,alias中存在
![](https://s1.51cto.com/images/blog/201801/11/6b9fcdd473e8d25a09a3b505e4311375.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](https://s1.51cto.com/images/blog/201801/11/f1d664cf9e5fd82354bd837d17f5440b.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](https://s1.51cto.com/images/blog/201801/11/81284fc1b5cfa8557271267606e1da99.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
直接测试该comment的优先度
![](https://s1.51cto.com/images/blog/201801/11/e4d92a2bf88a48cfb3a5684029cd855c.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
显示第一个为alias,禁用该alias后再测试
![](https://s1.51cto.com/images/blog/201801/11/47704a0ed44687276127b4b9f391a94e.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
第二个为内置命令,依旧禁用并测试
![](https://s1.51cto.com/images/blog/201801/11/8b03bd2db3aab8be20b5b9a27742cc76.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](https://s1.51cto.com/images/blog/201801/11/ee42774468772b9940a83dc872fd9e0e.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
第三个为外部命令的hash缓存,删除缓存后最后测试
![](https://s1.51cto.com/images/blog/201801/11/7cf330724f82c4729885886c1d5fd0ea.png? x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
由上可得出根据同一命令输出的优先度显示为alias>内置命令>外部命令(hash>path)
转载于:https://blog.51cto.com/13570215/2059902