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