<hash命令:顯示、新增或清除雜湊表>

Linux.應用發表於2014-06-14

linux系統下的hash指令:

 

說明:linux系統下會有一個hash表,當你剛開機時這個hash表為空,每當你執行過一條命令時,hash表會記錄下這條命令的路徑,就相當於快取一樣。第一次執行命令shell直譯器預設的會從PATH路徑下尋找該命令的路徑,當你第二次使用該命令時,shell直譯器首先會檢視hash表,沒有該命令才會去PATH路徑下尋找。

 

hash表的作用:大大提高命令的呼叫速率

 

hash的引數:

[root@redhat ~]# hash  //輸入hash或hash -l 可以檢視hash表的內容,我剛開機所以為空
hash: hash table empty
[root@redhat ~]# hash -l
hash: hash table empty

 

當我執行過2條命令後再看:

[root@redhat ~]# hash  //hash表會記錄下執行該命令的次數,以及命令的絕對路徑
hits command
   1 /bin/cat
   1 /bin/ls
[root@redhat ~]# hash -l  //加引數-l既可以看到hash表命令的路徑,也可以看到它的名字,說不定會有別名哦
builtin hash -p /bin/cat cat
builtin hash -p /bin/ls ls

 

[root@redhat ~]# hash -p /bin/ls bb  //新增hash表,可以看到我把ls命令重新寫了一遍,改名為bb

[root@redhat ~]# bb    //當我執行bb時就是執行ls命令
anaconda-ks.cfg        icmp_echo_ignore_aly~  pub.key
dead.letter        icmp_echo_ignore_alz~  rpmbuild
icmp_echo_ignore_all~  install.log       RPM-GPG-KEY-useradd
icmp_echo_ignore_alw~  install.log.syslog     RPM-GPG-KEY-westos
icmp_echo_ignore_alx~  passwd

 

[root@redhat ~]# hash -t ls  //-t引數可以檢視hash表中命令的路徑,要是hash表中沒有怎麼辦?
/bin/ls

[root@redhat ~]# hash -t df  //我沒使用過df,執行hash,就會提示找不到該命令
-bash: hash: df: not found

 

[root@redhat ~]# hash -r  //清楚hash表,清楚的是全部的
[root@redhat ~]# hash -l
hash: hash table empty

 

[root@redhat ~]# hash -l
builtin hash -p /bin/cat cat
builtin hash -p /bin/ls ls
[root@redhat ~]# hash -d cat   //清楚其中的某一條
[root@redhat ~]# hash -l
builtin hash -p /bin/ls ls

 

 

 

 

 

相關文章