如何在 Bash 中重置已編輯的歷史記錄行?

如何在 Bash 中重置已編輯的歷史記錄行?

在 Bash 中,您可以按下向上(和向下)箭頭來遍歷歷史記錄。然後,您可以在執行命令之前修改該命令。有時我錯誤地修改了命令,並希望將其重置為原來的歷史記錄。有沒有辦法做到這一點?

我嘗試執行空白行,然後再次遍歷歷史記錄,但相關行仍處於編輯狀態。

答案1

撤銷是 Cx Cu(或 C-_,您可能需要鍵入 C-/)

答案2

包含 bash 歷史記錄的文件是“~/.bash_history”,足夠合適(至少在 ubuntu 中,在其他版本中可能有所不同)。只需使用您喜歡的文字編輯器打開它,請注意每個使用者都應該有自己的 .bash_history 檔案。另請注意前面的“.”。意味著它是一個隱藏文件,因此它不會顯示在文件瀏覽器或 ls 命令中,除非您將其與 -a 一起使用。

答案3

此綁定將防止未執行的歷史記錄變更覆蓋原始記錄:

bind 'set revert-all-at-newline on'

例子:

  1. 執行ls
  2. 按向上箭頭
  3. 加入-Al行中
  4. 按向下箭頭
  5. 按 Return 鍵(嘗試取消更改)

如果沒有此綁定:
ls將在歷史中被替換ls -Al,即使它從未被執行過。

透過這種綁定:
未執行的ls -Al將消失,而ls仍然存在。

顯然,這意味著未執行的歷史記錄變更將絕不被保存(就像 zsh 的預設行為)。如果您只想恢復原件有時,您必須選擇其他答案之一。

相關內容