Bash

shell 歷史中的粘性條目

  • January 24, 2016

有沒有一種方法可以使某些命令在 shell 歷史記錄中“粘性”?

我想保存一些可以用 Ctrl+R 搜尋的最喜歡的命令,就像歷史的其餘部分一樣,但它們永遠不會過期。

一種簡單的方法是將程式碼放入您的 shell 啟動文件以讀取額外的歷史文件,並確保您在記憶體中儲存了足夠多的歷史行,以便不會忘記粘滯行。

重擊

~/.bashrc

history -r ~/.bash_history.sticky

還要確保HISTSIZE至少HISTFILESIZE加上行數~/.bash_history.sticky加上您在長時間會話中執行的命令數,例如

HISTFILESIZE=1000
HISTSIZE=10000

如果您想確保粘性歷史條目保留在記憶體中而不會非常大HISTSIZE,您可以通過手動修剪歷史記錄來做到這一點PROMPT_COMMAND,但如果您有inhistory -d則很難正確處理。erasedups``HISTCONTROL

zsh

~/.zshrc

fc -RI ~/.zsh_history.sticky

還要確保HISTSIZE至少SAVEHIST加上行數~/.zsh_history.sticky加上您在長時間會話中執行的命令數,例如

SAVEHIST=1000
HISTSIZE=10000

如果要確保粘性歷史條目保留在記憶體中而不會很大HISTSIZE,可以通過手動修剪歷史來做到這一點precmd,但這很麻煩(zsh並不真正支持重寫歷史,你必須fc -W進入一個臨時文件並讀回編輯過的版本),如果您設置了hist_ignore_dupsorhist_ignore_all_dups選項,則很難正確理解。

引用自:https://unix.stackexchange.com/questions/257105