如何在 Bash 中重置已编辑的历史记录行?

如何在 Bash 中重置已编辑的历史记录行?

在 Bash 中,您可以按向上(和向下)箭头遍历历史记录。然后您可以在执行命令之前对其进行修改。有时我错误地修改了命令,并希望将其重置为历史记录中的原始内容。有办法吗?

我尝试执行一个空白行,然后再次遍历历史记录,但相关行仍然被编辑。

答案1

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

答案2

包含 bash 历史记录的文件是“~/.bash_history”,这很合适(至少在 ubuntu 中如此,在其他版本中可能有所不同)。只需使用您最喜欢的文本编辑器打开它即可,请注意每个用户都应该有自己的 .bash_history 文件。还请注意,前面的“。”表示它是一个隐藏文件,因此除非您将其与 -a 一起使用,否则它不会显示在文件浏览器或 ls 命令中。

答案3

此绑定将防止未执行的历史记录更改覆盖原始历史记录:

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

例子:

  1. 执行ls
  2. 按向上箭头
  3. 添加-Al到行
  4. 按向下箭头
  5. 按回车键(尝试取消更改)

如果没有此绑定:
ls将在历史记录中被替换ls -Al,即使它从未执行过。

通过这种绑定:
未执行的ls -Al将会消失,而ls保留的将会消失。

显然这意味着未执行的历史修改将绝不保存(就像 zsh 的默认行为一样)。如果你只想恢复原始文件有时,则您必须选择其他答案之一。

相关内容