Command-Line
當它以空格開頭時,是否可以從 zsh shell 歷史記錄中刪除以前的命令?
對於如何從歷史記錄中刪除單行,我有以下答案?. 當我執行以下操作時, (
echo hello_world
) 行不會保存到歷史記錄中。請注意,我使用的是zsh
shell。prompt$ echo hello_world > # ^ extra space
$ history | tail -n1 1280 history | tail -n $ echo hello_world hello_world $ history | tail -n1 1280 history | tail -n
但是當我執行一個在開頭和之後有空格的命令時
Ctrl+P
,我可以在 shell 歷史記錄中看到它,即使它沒有保存在history
. 有可能預防嗎?使用bash
外殼,這在設置時有效HISTCONTROL= ignorespace
。$ echo hello_world $ # Press `CTRL-p` => " echo hello_world" shows up again
**設置:**我有以下
zsh
外殼配置:## Save only one command if 2 common are same and consistent setopt HIST_IGNORE_DUPS setopt HIST_IGNORE_ALL_DUPS ## Delete empty lines from history file setopt HIST_REDUCE_BLANKS ## Ignore a record starting with a space setopt HIST_IGNORE_SPACE ## Do not add history and fc commands to the history setopt HIST_NO_STORE ## Add timestamp for each entry setopt EXTENDED_HISTORY
您正在觀察的行為,即按下
Ctrl+P
會帶回上一個命令,即使它以空格開頭並HIST_IGNORE_SPACE
已設置,也會記錄在案(我的重點):
HIST_IGNORE_SPACE
(-g
)當行上的第一個字元是空格時,或者當一個擴展別名包含前導空格時,從歷史列表中刪除命令行。只有普通別名(不是全域別名或後綴別名)才有這種行為。 請注意,該命令會在內部歷史記錄中徘徊,直到輸入下一個命令才會消失,從而允許您短暫重用或編輯該行。如果您想讓它立即消失而不輸入另一個命令,請輸入一個空格並按輸入鍵。
根據手冊,解決方法是鍵入一個空格並按下
Enter
以防止Ctrl+P
再次訪問該命令。