Zsh
如何清除zsh中的歷史記錄
我正在尋找 bash 命令的 zsh 等效項
history -c
,換句話說,清除目前會話的歷史記錄。在 zshhistory -c
中返回 1 並帶有錯誤消息history: bad option: -c
。只是為了澄清,我不是在尋找刪除內容的方法
$HISTFILE
,我只是想要一個命令將歷史記錄重置為我打開終端時的相同狀態。刪除的內容$HISTFILE
與我想要的相反:它刪除了我想要保留的歷史記錄並保留了我想要刪除的歷史記錄(因為目前會話的歷史記錄會附加到它上面,無論它的內容之前是否被刪除)。我現在使用一種解決方法,但它顯然不太理想:在目前會話中,我設置
HISTFILE=/dev/null
並關閉並重新打開終端。這會導致關閉會話的歷史記錄不會附加到$HISTFILE
. 但是,我真的很喜歡history -c
bash 之類的東西,它比必須關閉並重新啟動終端要優雅得多。
要獲得空歷史記錄,請暫時設置
HISTSIZE
為零。function erase_history { local HISTSIZE=0; } erase_history
如果您想從此 shell 實例中刪除新的歷史記錄,但保留最初載入的舊曆史記錄,請按上述方式清空歷史記錄,然後重新載入保存的歷史記錄
fc -R
。如果不希望
erase_history
通話記錄在歷史記錄中,可以在zshaddhistory
hook中將其過濾掉。function zshaddhistory_erase_history { [[ $1 != [[:space:]]#erase_history[[:space:]]# ]] } zshaddhistory_functions+=(zshaddhistory_erase_history)
刪除一個特定的歷史元素(在 bash 中)是另一回事。我認為除了以下方法之外別無他法:
history -d *NUM*
- 保存歷史記錄:
fc -AI
附加到歷史記錄文件,或fc -WI
覆蓋歷史記錄文件,具體取決於您的歷史共享偏好。- 編輯歷史文件 (
$HISTFILE
)。- 重新載入歷史文件:
fc -R
.
相當於
history -c
on zsh 是history -p