HOWTO · Bash

Linux 中的 history 命令

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

本頁內容

本教程展示了使用 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 中的全部歷史記錄