linux查看哈希表命令-----hash

hash

hash命令负责显示与清除命令运行时系统优先查询的哈希表(hash table)。

linux系统下会有一个hash表,每个SHLL独立,当你新开一个SHELL的时候,这个hash表为空,每当你执行过一条命令时,hash表会记录下这条命令的路径,就相当于缓存一样。第一次执行命令shell解释器默认的会从PATH路径下寻找该命令的路径,当你第二次使用该命令时,shell解释器首先会查看hash表,没有该命令才会去PATH路径下寻找。

当系统刚刚开启的时候,哈希值为空

[root@linus ~]# hash
hash: 哈希表为空

hash表的作用:大大提高命令的调用速率。

语法

hash 【选项】 【参数】

选项

-d:在哈希表中清除记录
-l:显示哈希表中的命令
-p:<指令> 将具有完整路径的命令加入到哈希表中
-r:清除哈希表中的记录
-t:显示哈希表中命令的完整路径

常用实例

当使用了一条ls命令之后,再次使用hash或hash -l查看哈希表

[root@linus ~]# hash
命中	命令
   1	/usr/bin/ls

查看hash表中命令的路径
注:若无对应的命令记录,则无法查询命令路径

[root@linus /]# hash -t ls
/usr/bin/ls

将命令改名使用

[root@linus /]# hash -t ifconfig
/usr/sbin/ifconfig
[root@linus /]# hash -p /usr/sbin/ifconfig ens33	#添加ifconfig命令更名记录
[root@linus /]# ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.123  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::3862:c096:ecb8:495b  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:2d:ba:9a  txqueuelen 1000  (Ethernet)
        RX packets 1105  bytes 94846 (92.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 659  bytes 86743 (84.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
.....

删除哈希表其中一条记录

[root@linus /]# hash
命中	命令
   1	/usr/sbin/ifconfig
[root@linus /]# hash -d ifconfig
[root@linus /]# hash
hash: 哈希表为空

清除哈希表记录

[root@linus /]# hash -r
[root@linus /]# hash 
hash: 哈希表为空
发布了68 篇原创文章 · 获赞 8 · 访问量 5758

猜你喜欢

转载自blog.csdn.net/qq_42534026/article/details/104374142