只顯示 bash 歷史記錄中的一系列條目

只顯示 bash 歷史記錄中的一系列條目

是否可以為「history」指令設定一個固定數字,僅顯示一定數量的歷史記錄項,例如 100,而不是從開始時間開始的所有內容?

答案1

history n僅列印n歷史記錄的行。例如:

$ history 4
 2000  type history
 2001  help
 2002  help history
 2003  history 4
$

所以我們可以在你的中創建一個別名.bashrc

alias h="history 100"

help history

history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
    Display or manipulate the history list.

    Display the history list with line numbers, prefixing each modified
    entry with a `*'.  An argument of N lists only the last N entries.

如果您想保留大量歷史記錄(甚至可能是歷史記錄),這很有用無限個。和HISTCONTROL=ignoreboth:erasedups反向增量搜尋,這是您實際執行該命令的特殊場合history

答案2

設定HISTFILESIZEHISTSIZE 可以限制歷史命令的大小。

例如HISTFILESIZE=100HISTSIZE=100。它將限制歷史檔案儲存 100 行,並將HISTFILE您的 curent 會話命令在記憶體中儲存為 100 行。

當 shell 啟動時,歷史記錄將從變數命名的檔案HISTFILE(預設 ~/.bash_history)中初始化。如有必要,由 的值命名的檔案HISTFILE將被截斷,以使其包含的行數不超過變數值指定的行數HISTFILESIZE

您可以在文件中新增HISTFILESIZE=100 和。將 100 更改為您想要的數字。HISTSIZE=100~/.bashrc

解釋

HISTFILESIZE=10HISTSIZE=10

  1. 您開始您的會話。
    1. 您的 HISTFILE(儲存 bash 指令歷史記錄的檔案)被截斷為包含 HISTFILESIZE=10 行。
  2. 你寫了 50 行。
  3. 在 50 個指令結束時,歷史清單中只有指令 41 到 50,其大小由 HISTSIZE=10 決定。
  4. 您結束會話。
    1. 假設histappend未啟用,命令 41 到 50 將儲存到 HISTFILE 中,該檔案現在包含開頭儲存的 10 個命令以及新寫入的 10 個命令。
    2. 您的 HISTFILE 被截斷為包含 HISTFILESIZE=10 行。
  5. 您的歷史記錄中現在有 10 個命令 - 您剛剛在剛剛完成的會話中鍵入的最後 10 個命令。
  6. 當您啟動新會話時,您將從 1 開始,並且 HISTFILESIZE=10。

HISTFILESIZE=10HISTSIZE=5

  1. 您開始您的會話。
    1. 您的 HISTFILE(儲存 bash 指令歷史記錄的檔案)被截斷為最多包含 HISTFILESIZE=10 行。
  2. 你寫了 50 行。
  3. 在 50 個指令結束時,歷史清單中只有指令 46 到 50,其大小由 HISTSIZE=5 決定。
  4. 您結束會話。
    1. 假設histappend未啟用,命令 46 到 50 將儲存到您的 HISTFILE 中,該檔案現在包含開頭儲存的 10 個命令以及 5 個新寫入的命令。
    2. 您的 HISTFILE 被截斷為包含 HISTFILESIZE=10 行。
  5. 您的歷史記錄中現在有 10 個命令 - 5 個來自上一個會話,最後 5 個是您在剛完成的會話中輸入的。
  6. 當您啟動新會話時,您將從 1 開始,並且 HISTFILESIZE=10。

HISTFILESIZE=5HISTSIZE=10

  1. 您開始您的會話。
    1. 您的 HISTFILE(儲存 bash 指令歷史記錄的檔案)被截斷為最多包含 HISTFILESIZE=5 行。
  2. 你寫了 50 行。
  3. 在 50 個指令結束時,歷史清單中只有指令 41 到 50,其大小由 HISTSIZE=10 決定。
  4. 您結束會話。
    1. 假設histappend未啟用,命令 41 到 50 將儲存到 HISTFILE 中,該檔案現在包含開頭儲存的 5 個命令以及新寫入的 10 個命令。
    2. 您的 HISTFILE 被截斷為包含 HISTFILESIZE=5 行。
  5. 您的歷史記錄中現在有 5 個命令 - 您剛剛在剛剛完成的會話中鍵入的最後 5 個命令。
  6. 當您啟動新會話時,您將使用 HISTFILESIZE=5 的 HISTFILE 從步驟 1 開始。

這個很好的解釋來自:stackoverflow.com

相關內容