Linux history 命令詳解

啦啦乌托邦發表於2024-12-02

簡介

history 命令顯示當前 shell 會話中以前執行過的命令列表。這對於無需重新輸入命令即可重新呼叫或重新執行命令特別有用。

示例用法

顯示命令歷史列表

history

# 示例輸出如下:

1  ls -l
2  cd /var/log
3  cat syslog

執行歷史記錄中的命令

!<number>

!2

# number 表示執行第幾條命令

限制命令歷史顯示的條數

history <number>

history 10

清空當前 shell 會話的歷史命令

history -c

把命令歷史寫入 ~/.bash_history 檔案中

history -w

~/.bash_history 檔案中讀取命令

history -r

刪除命令歷史中的指定命令

history -d <number>

history -d 5

Ctrl + r 搜尋歷史命令

(reverse-i-search)`cat': cat syslog

重新執行上一條命令

!!

重新執行以指定字串開頭的最新歷史命令

!<string>

!cat

結合 grep 使用

history | grep "ls"

搜尋不以指定字串開頭的命令

!?ls

使用負數執行倒數最新的命令

!-2

追加命令歷史到 ~/.bashrc_history 檔案

history -a

設定多個 shell 會話的命令都追加寫入到 ~/.bash_history 檔案

# 修改 ~/.bashrc 檔案,新增以下行

shopt -s histappend

環境變數設定

設定會話期間儲存在記憶體中的命令數

export HISTSIZE=1000

設定儲存在 ~/.bash_history 檔案中的最大命令列數

export HISTFILESIZE=2000

定義重複或某些命令如何儲存在歷史記錄中

  • ignoredups:忽略重複的命令
  • ignorespace:忽略以空格開頭的命令
  • ignoreboth:合併以上兩者
export HISTCONTROL=ignoreboth

從歷史記錄中排除指定的命令

export HISTIGNORE="ls:pwd:exit"

啟用命令歷史中的時間戳

export HISTTIMEFORMAT="%F %T "

# 示例輸出如下:

1  2024-11-29 15:30:01 ls -l
2  2024-11-29 15:32:15 cd /var/log