Linux 中的 history 命令

Fumbani Banda 2023年1月30日 2022年5月11日
  1. Bash 中的 history 命令
  2. Bash 中的 history 環境變數
  3. 在 Bash 中顯示歷史
  4. 在 Bash 中顯示歷史中的前 n 個命令
  5. 在 Bash 中顯示歷史上最後的 n 個命令
  6. 在 Bash 中搜尋歷史
  7. 從 Bash 的歷史記錄中刪除命令
  8. 刪除 Bash 中的全部歷史記錄
Linux 中的 history 命令

本教程展示了使用 history 命令來顯示 Bash 歷史記錄、在歷史記錄中搜尋、刪除命令以及清除整個歷史記錄。

Bash 中的 history 命令

Bash 中的 history 命令顯示在 shell 會話中執行的所有命令的列表。history 命令將在 shell 上執行的每個命令視為一個事件,併為其分配一個事件編號。

以後可以使用事件編號訪問這些命令,也可以修改它們。主目錄中的 .bash_history 檔案還儲存終端上最近執行的命令。

Bash 中的 history 環境變數

history 命令相關的三個環境變數是: HISTFILEHISTFILESIZEHISTSIZE。環境變數 HISTFILE 儲存 Bash 歷史檔案的名稱和位置 .bash_history

環境變數 HISTFILESIZE 儲存儲存在 .bash_history 檔案中的命令數,HISTSIZE 儲存可以快取的命令數。

下圖顯示了三個環境變數中儲存的值; HISTFILEHISTFILESIZEHISTSIZE

.bash_history 檔案可以儲存 2000 條命令,一旦達到最大命令數,將刪除最舊的命令,並儲存新的命令。

系統可以快取的最大命令數為 1000。

Bash 中的環境變數

你必須編輯主目錄中的 .bashrc 檔案以修改三個環境變數。

在 Bash 中顯示歷史

要在 Bash 中顯示所有 history 命令,請鍵入 history 並按 Enter。當執行下圖中的 history 命令時,我們看到部分輸出顯示到標準終端。

命令前面的數字是與每個命令關聯的事件編號。

在 Bash 中顯示歷史

在 Bash 中顯示歷史中的前 n 個命令

我們可以使用 history 命令和 head 命令來顯示歷史中的前 n 個命令。我們在下圖中顯示了歷史上的前 10 個命令。

我們使用 history 命令、管道運算子和 head 命令來顯示前 10 個命令。history 命令輸出通過管道傳送到 head 命令,該命令僅獲取歷史輸出的前 10 行並將它們顯示到標準輸出。

在 Bash 中顯示歷史上的第一個命令

在 Bash 中顯示歷史上最後的 n 個命令

我們可以使用 history 命令來顯示最後 n 個命令並傳遞一個整數作為引數。我們傳遞的整數告訴 history 命令顯示歷史中最後的 n 命令。

我們使用 history 命令並傳遞下圖中的整數 7。這意味著 history 命令將顯示歷史中最後的 7 命令。

在 Bash 中顯示歷史上最後的命令

在 Bash 中搜尋歷史

我們還可以使用 history 命令和 grep 命令來搜尋歷史記錄中的特定模式。下圖在歷史記錄中使用 grep 命令搜尋正規表示式 delft

我們使用 history 命令、管道運算子和 grep 命令在歷史記錄中搜尋正規表示式。history 命令的輸出通過管道傳送到 grep 命令,該命令在其中搜尋正規表示式 delft

所有匹配正規表示式的行都顯示到標準終端。

在 Bash 中搜尋歷史

從 Bash 的歷史記錄中刪除命令

history 命令還可以從歷史記錄中刪除特定命令。要從歷史記錄中刪除命令,我們使用帶有 -d 選項的 history 命令和命令的事件編號。

在下圖中,我們使用命令 history 10 列出歷史中最後的 10 命令。我們決定刪除已突出顯示的命令。

我們使用帶有 -d 選項的 history 命令,並傳入突出顯示命令的事件編號。它從歷史記錄中刪除該命令。

為了確認命令是否已被刪除,我們檢查歷史記錄中的最後 10 行,我們看到事件 ID 為 312 的命令 pwd 不存在。

從 Bash 的歷史記錄中刪除命令

刪除 Bash 中的全部歷史記錄

要刪除歷史記錄中的所有條目,我們使用帶有 -c 選項的 history 命令。它會刪除歷史記錄中的所有條目。

在下圖中,我們使用 history 命令列出歷史中最後的 5 個命令。稍後,我們使用帶有 -c 選項的 history 命令來清除歷史記錄中的所有條目。

我們使用 history 命令顯示歷史中的所有條目,我們看到所有條目都已被清除。

刪除 Bash 中的全部歷史記錄

Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub