Shell

使特定命令遠離 shell 歷史記錄

  • March 14, 2020

我有一個命令實際上清除螢幕而不是簡單地滾動,就像預設的一樣,在我的clear別名為:c``.zshrc

alias c='clear && printf "\e[3J";'

我的問題是:我怎樣才能讓這個命令遠離我的 zsh 命令歷史記錄,這樣當我用向上箭頭鍵向上滾動時我看不到它?

使用set -o histignorespace,以 SPC 字元開頭的命令行不會插入到歷史記錄中(儘管您總是可以回憶起之前輸入的命令)。

所以,如果你做到了:

set -o histignorespace
alias c=' printf "\e[H\e[3J"'

並輸入第一個命令為 的命令行c,則該命令行將不會添加到歷史記錄中。

另一種方法可能是重新定義accept-line小元件,以便它在僅包含以下內容時清理螢幕和編輯緩衝區c

accept-line() case $BUFFER in
 (c) printf '\e[H\e[3J'; BUFFER=; zle redisplay;;
 (*) zle .accept-line
esac
zle -N accept-line

請注意,它僅在您輸入時才有效,僅此而已c,而不是c; something-else例如。Enter如果您在 PS2 提示符下按下它也會這樣做:

for i do
c

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