简介

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的更多相关文章

  1. Linux+Redis实战教程_day02_3、redis数据类型_4、String命令_5、hash命令_6、java操作redis数据库技术

    3. redis数据类型[重点] redis 使用的是键值对保存数据.(map) key:全部都是字符串 value:有五种数据类型 Key名:自定义,key名不要过长,否则影响使用效率 Key名不要 ...

  2. bash shell 中的 hash 命令有什么作用?

    linux 命令'hash'管理着一个内置的哈希表,记录了已执行过的命令的完整路径,用该命令可以打印出你所使用过的命令以及执行的次数. [root@localhost ~]# hashhits com ...

  3. 【原创】Linux下获取命令的帮助与常用命令

    Linux中的shell命令一般是执行步骤:用户在终端输入命令回车,系统内核会在当前用户的环境变量PATH中去读取环境变量的值 变量的值就是命令的路径,命令路径不只一个,于是系统会从这些路径中从左至右 ...

  4. LInux基础命令分类

    1. 命令的概念 命令的执行过程 系统第一次执行外部命令时Hash缓存表为空,系统会先从PTAH路径下寻找命令,找到后会将路径加入到Hasa缓存中,当再次执行此命令时会直接从Hash的路径下执行,如果 ...

  5. redis数据库各种数据类型的增删改查命令

    redis的常用数据操作: redis是key-value的数据结构,每条数据都是一个键值对. 键的类型是字符串并且键不能重复. redis最基本数据类型是string 所以下面的操作可以省略引号&q ...

  6. Redis in .NET Core 入门:(3) Hash

    第1篇:https://www.cnblogs.com/cgzl/p/10294175.html 第2篇 String:https://www.cnblogs.com/cgzl/p/10297565. ...

  7. Linux命令1

     1.获取当前系统支持的所有命令的列表: compgen ­-c  2.怎样查看一个linux命令的概要与用法: whatis grep #便可查到grep的用法 3.怎样一页一页地查看一个大文件的内 ...

  8. 【Linux学习一】命令查看与帮助

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 一.Linux执行命令流程:shell->bash(解释器 执行 ...

  9. 第2天【OS Linux发行版介绍、Linux系统基础使用入门、Linux命令帮助、Linux基础命令】

    Logout    退出系统 Gedit     文本编辑器工具 Uname –r 查看内核版本信息,uname –a 比较详细 Cat /proc/cpuinfo      查看CPU Cat /p ...

  10. Ansible常用模块命令

    Ansible常用模块命令 一.安装ansible yum install epel-release yum install ansible 二.配置文件配置 vi /etc/ansible/ansi ...

随机推荐

  1. mysql 架构 ~ binlog_server

    一 简介 mysql binlog server 二 目的 实时备份线上的binlog 利用备份+binlog进行任何时间点的恢复 三  详细信息    1 基本命令 /usr/local/mysql ...

  2. Web项目Shiro总结及源码(十六)

    shiro过虑器 过滤器简称 对应的java类 anon org.apache.shiro.web.filter.authc.AnonymousFilter authc org.apache.shir ...

  3. jquery开发自定义的插件总结

    1.第一种方式,有元素的插件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...

  4. Linux mmc framework2:基本组件之mmc

    1.前言 本文主要mmc组件的主要流程,在介绍的过程中,将详细说明和mmc相关的流程,涉及到其它组件的详细流程再在相关文章中说明. 2.主要数据结构和API TODO 3. 主要流程 3.1 mmc_ ...

  5. ES系列十二、ES的scroll Api及分页实例

    1.官方api 1.Scroll概念 Version:6.1 英文原文地址:Scroll 当一个搜索请求返回单页结果时,可以使用 scroll API 检索体积大量(甚至全部)结果,这和在传统数据库中 ...

  6. 详解.NET IL代码(一)

    本文主要介绍IL代码,内容大部分来自网上,进行整理合并的. 一.IL简介 为什么要了解IL代码? 如果想学好.NET,IL是必须的基础,IL代码是.NET运行的基础,当我们对运行结果有异议的时候,可以 ...

  7. windows系统实现mysql数据库数据库主从复制

    环境: master mysql服务器 192.168.8.201 slave mysql服务器 192.168.8.89 目标: 实现主从复制 1.将MySQL5.5安装文件分别拷贝到两台机器的c盘 ...

  8. 通达OA数据库优化方案之_历史数据清理

    整体思路: 1.备份现有系统数据,提供一个可以查询历史的入口(可以查询2015年6月份以前的所有OA产生的流程) 2.删除生产环境中2015年6月份以前的流程 为避免影响考勤,暂定在本月考勤定稿后实施 ...

  9. eclipse:刪除空行

    ctrl+F:選擇正則,輸入:^\s*\n ,點擊 replace all.

  10. selenium和pyquery抓取异步加载数据

    安装selenium和pyquery 打开命令行输入: pip install selenium pip install pyquery chromedriver的下载地址如下: http://chr ...