命令:hash
简介
hash命令是bash的内置命令。
我们知道在bash中执行外部命令,会根据环境变量PATH来逐一搜索命令的路径。
hash就是用于记住命令的路径,并且在下次执行命令的时候直接通过hash获取而不再通过PATH一步步寻找,加快了寻找命令的速度。
hash就像是命令的缓存。
语法
hash [-lr] [-p pathname] [-dt] [name ...]
语法中的name就是每个命令的名称,例如:ls、grep、cat等。
选项与示例
当不使用任何选项和参数的时候,hash命令可以输出当前所记住的命令以及其缓存命中次数。
一开始没有执行外部命令的时候,hash是空的。
[root@C7 ~]# hash
hash: hash table empty
执行了几个命令之后。如果某些命令有重复执行,那么命中数会大于1。
[root@C7 ~]# hash
hits command
/usr/bin/grep
/usr/bin/tail
/usr/bin/head
/usr/bin/ls
-d:删除已记住的命令的路径。
[root@C7 ~]# hash
hits command
/usr/bin/grep
/usr/bin/ls
[root@C7 ~]# hash -d grep
[root@C7 ~]# hash
hits command
/usr/bin/ls
-l:也是输出当前缓存中的内容,只不过输出的格式可用于输入或者再执行。
[root@C7 ~]# hash -l
builtin hash -p /usr/bin/ls ls
-p pathname:为某个命令手动设置路径。一般用于当命令的位置发生改变的情况。若出现该情况也可以使用-d删除缓存再重新执行一遍。
注意:如果指定了一个错误的路径的话,那么命令就无法使用了,如下所示。
[root@C7 ~]# hash -p /tmp/grep grep
[root@C7 ~]# hash
hits command
/tmp/grep
/usr/bin/tail
[root@C7 ~]# grep 'root' /etc/passwd
-bash: /tmp/grep: No such file or directory
-r:清空缓存列表。
[root@C7 ~]# hash
hits command
/usr/bin/sort
/usr/bin/cat
/usr/bin/ls
[root@C7 ~]# hash -r
[root@C7 ~]# hash
hash: hash table empty
-t:显示在缓存中,命令的对应路径。命令不在缓存中则会报错。
[root@C7 ~]# hash
hits command
/usr/bin/head
/usr/bin/du
/usr/bin/cat
/usr/bin/less
/usr/bin/ls
[root@C7 ~]# hash -t ls
/usr/bin/ls
[root@C7 ~]# hash -t less
/usr/bin/less
[root@C7 ~]# hash -t ls less grep
ls /usr/bin/ls
less /usr/bin/less
-bash: hash: grep: not found
hash name:如果仅带参数不带选项的话,hash可用于清空具体命令的缓存命中次数。这个功能是不小心发现的,在“help hash”中并无说明。
[root@C7 ~]# hash
hits command
/usr/bin/head
/usr/bin/wc
[root@C7 ~]# hash wc
[root@C7 ~]# hash
hits command
/usr/bin/head
/usr/bin/wc
命令:hash的更多相关文章
- Linux+Redis实战教程_day02_3、redis数据类型_4、String命令_5、hash命令_6、java操作redis数据库技术
3. redis数据类型[重点] redis 使用的是键值对保存数据.(map) key:全部都是字符串 value:有五种数据类型 Key名:自定义,key名不要过长,否则影响使用效率 Key名不要 ...
- bash shell 中的 hash 命令有什么作用?
linux 命令'hash'管理着一个内置的哈希表,记录了已执行过的命令的完整路径,用该命令可以打印出你所使用过的命令以及执行的次数. [root@localhost ~]# hashhits com ...
- 【原创】Linux下获取命令的帮助与常用命令
Linux中的shell命令一般是执行步骤:用户在终端输入命令回车,系统内核会在当前用户的环境变量PATH中去读取环境变量的值 变量的值就是命令的路径,命令路径不只一个,于是系统会从这些路径中从左至右 ...
- LInux基础命令分类
1. 命令的概念 命令的执行过程 系统第一次执行外部命令时Hash缓存表为空,系统会先从PTAH路径下寻找命令,找到后会将路径加入到Hasa缓存中,当再次执行此命令时会直接从Hash的路径下执行,如果 ...
- redis数据库各种数据类型的增删改查命令
redis的常用数据操作: redis是key-value的数据结构,每条数据都是一个键值对. 键的类型是字符串并且键不能重复. redis最基本数据类型是string 所以下面的操作可以省略引号&q ...
- Redis in .NET Core 入门:(3) Hash
第1篇:https://www.cnblogs.com/cgzl/p/10294175.html 第2篇 String:https://www.cnblogs.com/cgzl/p/10297565. ...
- Linux命令1
1.获取当前系统支持的所有命令的列表: compgen -c 2.怎样查看一个linux命令的概要与用法: whatis grep #便可查到grep的用法 3.怎样一页一页地查看一个大文件的内 ...
- 【Linux学习一】命令查看与帮助
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 一.Linux执行命令流程:shell->bash(解释器 执行 ...
- 第2天【OS Linux发行版介绍、Linux系统基础使用入门、Linux命令帮助、Linux基础命令】
Logout 退出系统 Gedit 文本编辑器工具 Uname –r 查看内核版本信息,uname –a 比较详细 Cat /proc/cpuinfo 查看CPU Cat /p ...
- Ansible常用模块命令
Ansible常用模块命令 一.安装ansible yum install epel-release yum install ansible 二.配置文件配置 vi /etc/ansible/ansi ...
随机推荐
- jquery 操作表单的问题
下拉框获取选中项的值: $("#ID").find("option:selected").val(); 设置下拉框选中项: $("#ID") ...
- c# 创建项目时提示:未能正确加载“microsoft.data.entity.design.bootstrappackage
vs 2005 ,vs 2008, vs 2010,安装后有时出现这个错误(我的机器装的x64的win7),很烦人.找了很多地方都不能解决.其实说起来还是开发国家牛,轻易就解决了这个问题.其实出现这个 ...
- C++ Boost库简介(转载)
boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化.不过对比STL,boost更加实用.STL集中在算法部分,而boost包含了不少工具类, ...
- arch linux 安装指南
(如果不想折腾arch linux,推荐直接使用 manjaro: https://manjaro.org/ ) 1.安装准备 Arch Linux 能在任何内存空间不小于 512MB 的 x86_ ...
- nodejs 使用http模块保存源码
var xpath=require("xpath"); var fs=require("fs"); var dom = require('xmldom').DO ...
- zabbix添加对自定义无规则的关键日志文件的监控
zabbix添加对自定义无规则日志文件的监控 项目背景及思路: zabbix自带有针对日志文件的监控,自带的监控只能监控到指定文件或者正则匹配的固定日志文件,但当需要监控的文件名没有规律的时候自带监控 ...
- 创建物理卷报错Can't open /dev/sdb5 exclusively. Mounted filesystem的问题解决过程记录
yum服务器lvm扩容,data目录是yum存放rpm包的目录,只有20G,需要添加磁盘扩容到80G # df -lh Filesystem Size Used Av ...
- Eureka 开发时快速剔除失效服务
Spring Cloud 版本: Dalston.SR5 服务端配置: # 关闭保护机制 eureka.server.enable-self-preservation=false #剔除失效服务间隔 ...
- log4j2配置文件log4j2.xml
原地址:https://www.cnblogs.com/hafiz/p/6170702.html 1.关于配置文件的名称以及在项目中的存放位置 log4j 2.x版本不再支持像1.x中的.proper ...
- UITableView滑动性能优化扩展
一点UITableView滑动性能优化扩展 影响UITableView的滑动,有哪些因素呢? 关于这一点,人眼能识别的帧率是60左右,这也就是为什么,电脑屏幕的最佳帧率是60Hz. 屏幕一秒钟会刷 ...