Bash
shell 歷史中的粘性條目
有沒有一種方法可以使某些命令在 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_dups
orhist_ignore_all_dups
選項,則很難正確理解。