
在 Bash 中,您可以按下向上(和向下)箭頭來遍歷歷史記錄。然後,您可以在執行命令之前修改該命令。有時我錯誤地修改了命令,並希望將其重置為原來的歷史記錄。有沒有辦法做到這一點?
我嘗試執行空白行,然後再次遍歷歷史記錄,但相關行仍處於編輯狀態。
答案1
撤銷是 Cx Cu(或 C-_,您可能需要鍵入 C-/)
答案2
包含 bash 歷史記錄的文件是“~/.bash_history”,足夠合適(至少在 ubuntu 中,在其他版本中可能有所不同)。只需使用您喜歡的文字編輯器打開它,請注意每個使用者都應該有自己的 .bash_history 檔案。另請注意前面的“.”。意味著它是一個隱藏文件,因此它不會顯示在文件瀏覽器或 ls 命令中,除非您將其與 -a 一起使用。
答案3
此綁定將防止未執行的歷史記錄變更覆蓋原始記錄:
bind 'set revert-all-at-newline on'
例子:
- 執行
ls
- 按向上箭頭
- 加入
-Al
行中 - 按向下箭頭
- 按 Return 鍵(嘗試取消更改)
如果沒有此綁定:
ls
將在歷史中被替換ls -Al
,即使它從未被執行過。
透過這種綁定:
未執行的ls -Al
將消失,而ls
仍然存在。
顯然,這意味著未執行的歷史記錄變更將絕不被保存(就像 zsh 的預設行為)。如果您只想恢復原件有時,您必須選擇其他答案之一。