linux中别名的区别,Linux中命令的分类,hash缓存表与别名

命令的分类:

在Linnux中,平常工作用的是字符界面。Linux输入命令后,shell接收命令通过系统调用把命令送入内核中执行。

*shell中的可执行命令分为两类

1.内部命令:为shell自带命令,利用某种形式在开机后到到加载内存中

help,enable      可以查内部有那些命令

如:

[ting@CentOS7~]$help

:                                      kill [-s sigspec | -n signum | -sig>

[ arg… ]                             let arg [arg …]

[[ expression ]]                       local [option] name[=value] …

[ting@CentOS7~]$enable

enable .

enable :

enable alias

enable bg

enable cd

enable -n cmd   禁用内部命令

enable cmd      启用内部命令

enable -n       查看禁用命令

如:

[ting@CentOS7~]$enable -n cd

[ting@CentOS7~]$help   #查看是否禁用

cd [-L|[-P [-e]]] [dir]                readarray [-n count] [-O origin] [->

command [-pVv] command [arg …]           打的被禁用了

[ting@CentOS7~]$ enable cd  # 启用内部命令

[ting@CentOS7~]$help

cd [-L|[-P [-e]]] [dir]                    readarray [-n count] [-O origin] [->

2.外部命令:在系统路径下有对应的可执行程序的文件

which,whereis   查看外部命令和内部命令的路径

如:

[ting@CentOS7~]$which cat

/usr/bin/cat

[ting@CentOS7~]$whereis yus

yus:[ting@CentOS7~]$whereis yes

yes: /usr/bin/yes /usr/share/man/man1/yes.1.gz

[ting@CentOS7~]$whereis cd   ## 查看内部命令的路径

cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz

*区分命令是外部命令或外部命令

type COMMAND

[ting@CentOS7~]$type cd

cd is a shell builtin

[ting@CentOS7~]$type cat

cat is /usr/bin/cat

查看是不是外部命令就type一下看看有没有系统路径;

问:为什么内部命令和外部命令都有可以执行程序的系统路径?

因为shell的的类型不同如通常我们是用bash,如果另用其他的shell如csh就会产生内部命令不一样,

我们通常把一些内部命令写到系统路径下对应的可执行程序的文件中。

—————————————————————————————————————————

hash缓存表及其常用用法:

*Hash缓存表

系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录

到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH

路径下寻找。利用hash缓存表可大大提高命令的调用速率

echo $PATH:查找外部命令要找的路径的顺序:

[ting@CentOS7~]$echo $PATH

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ting/.local/bin:/home/ting/bin

*常用用法:

hash      显示hash缓存

hash -l   显示h所以ash缓存的名字,一般做输入使用

hash -t  name  打印缓存中的name路径

hash -p  pth name 将命令的路径path(特别是一些常用并且路径很长的)起别名为name

hash -d  name   清除name的缓存

hash -r   清除所有的缓存

如:

[ting@CentOS7~]$hash

hits    command

1    /usr/bin/cat

4    /usr/bin/whereis

[root@CentOS7/]#hash -l

builtin hash -p /usr/bin/grep grep #–>最后一个单词是显示缓存的名字,它可以和路径的基名不一致

builtin hash -p /usr/bin/ls ls

[root@CentOS7/]#hash -d grep     #删除grep(名字)的路径

[root@CentOS7/]#hash)

hits    command

3    /usr/bin/ls

[root@CentOS7/]#hostname

CentOS7.3

[root@CentOS7/]#hash

hits    command

1    /usr/bin/hostname

[root@CentOS7/]#hash -p/usr/bin/hostname  h  #将/usr/bin/hostname路径改名h

[root@CentOS7/]#h

CentOS7.3

[root@CentOS7/]#hash -l

builtin hash -p /usr/bin/hostname hostname

builtin hash -p /usr/bin/hostname h   #——>缓存名字h与路径基名hostname不一致

________________________________________________________________________________

命令别名:

为什么要取别名?

就如人为什么有了名字,为什么要有一些其他的小名等别名,还不是为了方便我们叫,同理在

Linux中也一样,一个命令路径很长时,而且经常我们要用,这时别名就起了作用。

alias  newname = oldname     将oldname起别名为newname

撤销别名:

unalias [-a] name [name]    加-a 为取消所有别名

[root@CentOS7~]#alias h=hostname

[root@CentOS7~]#h

CentOS7.3

———————————————————————————————————————————————————————————

命令的优先级 :

a.外部命令与内部命令优先级比较(用pwd举例)

[root@CentOS~]#type pwd

pwd is a shell builtin

[root@CentOS~]#enable -n pwd   # 禁用内部命令

[root@CentOS~]#pwd

/root

[root@CentOS~]#type pwd

pwd is /bin/pwd                 #pwd是外部命令

[root@CentOS~]#enable pwd       #启用内部命令

[root@CentOS~]#pwd

/root

[root@CentOS~]#type pwd         #—-> 说明内部命令比外部命令优先级高

pwd is a shell builtin

结论:

内部命令比外部命令优先级高

别名有内部命令优先级比较

[root@CentOS7~]#alias pwd=hostname        #将hostname起别名叫pwd

[root@CentOS7~]#pwd                       #输入pwd如果结果是/,那么就是内部命令优先级比

CentOS7.3                                 #外部优先级高,反正则是输出hostname的结果CentOS

[root@CentOS7~]                           #那么别名优先级比内部优先级高

结论:

别名优先级比内部优先级高

SO:别名优先级高于内部命令高于外部命令

原创文章,作者:m25Chronos,如若转载,请注明出处:http://www.178linux.com/80945

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值