Linux hash table 学习笔记




一、hash表概述


在 Linux 系统第一次执行外部命令时,hash 缓存表是空的;
这时,系统会先从 PATH 路径下寻找命令,找到后会将路径加入到 Hash 缓存中;

当再次执行此命令时,会直接从 hash 表的路径下执行;
如果存在则直接执行,如果不存在将继续从 PATH 下的路径查找;

因此,hash 表可以提高命令的调用速率。




二、hash缓存表的位置


在 Linux 系统上执行命令,有个执行优先级,hash缓存表的位置如下:

alias -------------------------------------别名
  builtin------------------------------内部命令
    hash-------------------------缓存表
      $PATH---------------可执行程序或脚本(外部命令)

关于 Linux 内部命令和外部命令的区别,有兴趣可以戳 《 Linux 内部命令 和 外部命令 》 了解。




三、hash命令使用简介


hash 命令,可以用来显示和配置 hash缓存表;
执行命令的时候,系统将先查询 hash缓存表。

hash 命令主要参数:

-l    显示哈希表所有的项目
-r    清除哈希表所有项
-d <名称>   删除哈希表其中的一项
-p <路径>   向哈希表中增加一项内容,添加后就可以使用了
-t  <命令>  显示hash表中命令的完整路径,如果没有就会报not found错误



四、hash命令用法示例


:~> bash   # 进入一个全新的 shell
:~> hash
hash: hash table empty    # 由于是新建 shell,所以hash表为空,符合预期

:~> ls -l

:~> hash
hits    command
   1    /usr/bin/ls
:~> top

:~> hash
hits    command
   1    /usr/bin/ls
   1    /usr/bin/top

:~> uptime
 17:56:40 up 1138 days, 7 min,  1 user,  load average: 0.47, 0.36, 0.28

:~> hash   #  可以看到hash表在不断更新
hits    command
   1    /usr/bin/uptime
   1    /usr/bin/ls
   1    /usr/bin/top

:~> hash -l
builtin hash -p /usr/bin/uptime uptime
builtin hash -p /usr/bin/ls ls
builtin hash -p /usr/bin/top top

:~> hash -p /tmp/mydate  date   # 手动添加hash表

:~> hash -l
builtin hash -p /usr/bin/uptime uptime
builtin hash -p /tmp/mydate date   # 添加成功
builtin hash -p /usr/bin/ls ls
builtin hash -p /usr/bin/top top

:~> date
bash: /tmp/mydate: No such file or directory    # 由于手动添加的hash表指向执行文件不存在,所以报错,这说明新增的hash表确实在work

:~> hash -d  date   # 手动清楚刚加的hash表,使用 -r 则全部清除

:~> hash -l
builtin hash -p /usr/bin/uptime uptime
builtin hash -p /usr/bin/ls ls
builtin hash -p /usr/bin/top top

:~> date   # 恢复
Sun Jan 19 18:02:45 CST 2020

发布了37 篇原创文章 · 获赞 24 · 访问量 3072

猜你喜欢

转载自blog.csdn.net/weixin_44648216/article/details/104059516