命令:hash

来源:https://www.cnblogs.com/alongdidi/archive/2019/02/22/10419553.html
-Advertisement-
Play Games

簡介 hash命令是bash的內置命令。 我們知道在bash中執行外部命令,會根據環境變數PATH來逐一搜索命令的路徑。 hash就是用於記住命令的路徑,並且在下次執行命令的時候直接通過hash獲取而不再通過PATH一步步尋找,加快了尋找命令的速度。 hash就像是命令的緩存。 語法 語法中的nam ...


簡介

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
   1    /usr/bin/grep
   1    /usr/bin/tail
   1    /usr/bin/head
   2    /usr/bin/ls

-d:刪除已記住的命令的路徑。

[root@C7 ~]# hash
hits    command
   1    /usr/bin/grep
   1    /usr/bin/ls
[root@C7 ~]# hash -d grep
[root@C7 ~]# hash
hits    command
   1    /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
   0    /tmp/grep
   0    /usr/bin/tail
[root@C7 ~]# grep 'root' /etc/passwd
-bash: /tmp/grep: No such file or directory

-r:清空緩存列表。

[root@C7 ~]# hash
hits    command
   1    /usr/bin/sort
   1    /usr/bin/cat
   1    /usr/bin/ls
[root@C7 ~]# hash -r
[root@C7 ~]# hash
hash: hash table empty

-t:顯示在緩存中,命令的對應路徑。命令不在緩存中則會報錯。

[root@C7 ~]# hash
hits    command
   1    /usr/bin/head
   1    /usr/bin/du
   1    /usr/bin/cat
   1    /usr/bin/less
   1    /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
   1    /usr/bin/head
   5    /usr/bin/wc
[root@C7 ~]# hash wc
[root@C7 ~]# hash
hits    command
   1    /usr/bin/head
   0    /usr/bin/wc

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • K2流程製作註意事項 1:分析需求 2:實施 步驟1:繪製流程圖 步驟2:添加datafield【必備:ActJumped IsPass】 步驟3:添加線規則(如下圖所示,在添加完畢規則之後,再給同意這條線下添加ActJumped=Jumped) 步驟4:添加dll 步驟5:部署,這時候不用點擊生成 ...
  • 接下來就要說說應用 Asp.Net Core 的特性(跨平臺),將 .NetCore 部署到 Linux 中,主流的 Linux 有多個版本的操作系統,這裡以 Centos-7.5 為例子 ...
  • 0.安裝步驟預覽(1)系統預設自帶python2.x,所以需要先安裝python3.x(2)python2對應pip,python3對應pip3,用源碼安裝python3後pip3也自動安裝了(3)用pip3安裝virtualenv(4)用virtualenv創建python3的虛擬環境(5)在創建 ...
  • 1. 打開CMD,輸入以下命令 1 ipconfig -all 2. 設置主機Wi-Fi網路對VMnet8虛擬網卡的網路共用 3. 虛擬機NAT模式配置 4. 配置虛擬機網卡信息 切換到ROOT 1 cd /etc/sysconfig/network-scripts 2 vi ifcfg-eth0 ...
  • Active Directory 域服務安裝與測試 實驗原理: 安裝域服務並創建用戶,把另一個電腦加入域中,然後用域賬戶登錄以及用本地賬戶登錄測試 實驗條件:windows server 2008(域控制器), win7(加入域的pc) 實驗步驟: 一、安裝域服務以及配置信息 1.打開”服務管理器” ...
  • 一、安裝 1.檢查gcc環境 執行命令,如果Linux系統沒有安裝gcc編譯器,會提示“Command not found” # gcc -v 安裝gcc # yum -y install gcc 以上是make需要的,不裝會報錯! 2.下載Redis # cd /usr/local # wget ...
  • 一、文件許可權 使用 ls -l 命令可以查看文件的具體屬性: 如圖所示,第一列所示告訴了用戶一個文件的類型和許可權信息: 1)第一個字元 "d",表明該文件是一個目錄文件; 2)r 表示該文件具有可讀許可權; 3)w 表示該文件具有寫許可權; 4)x 表示該文件具有可執行許可權。 5)第一個 rwx 表示該 ...
  • zabbix介紹 zabbix是一個基於WEB界面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案。 zabbix能監視各種網路參數,保證伺服器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。 zabbix由2部分構成,zabbix server與可選組件z ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...