在 Bash 中,您可以按向上(和向下)箭头遍历历史记录。然后您可以在执行命令之前对其进行修改。有时我错误地修改了命令,并希望将其重置为历史记录中的原始内容。有办法吗?
我尝试执行一个空白行,然后再次遍历历史记录,但相关行仍然被编辑。
答案1
撤消是 Cx Cu(或 C-_,您可能需要输入 C-/)
答案2
包含 bash 历史记录的文件是“~/.bash_history”,这很合适(至少在 ubuntu 中如此,在其他版本中可能有所不同)。只需使用您最喜欢的文本编辑器打开它即可,请注意每个用户都应该有自己的 .bash_history 文件。还请注意,前面的“。”表示它是一个隐藏文件,因此除非您将其与 -a 一起使用,否则它不会显示在文件浏览器或 ls 命令中。
答案3
此绑定将防止未执行的历史记录更改覆盖原始历史记录:
bind 'set revert-all-at-newline on'
例子:
- 执行
ls
- 按向上箭头
- 添加
-Al
到行 - 按向下箭头
- 按回车键(尝试取消更改)
如果没有此绑定:
ls
将在历史记录中被替换ls -Al
,即使它从未执行过。
通过这种绑定:
未执行的ls -Al
将会消失,而ls
保留的将会消失。
显然这意味着未执行的历史修改将绝不保存(就像 zsh 的默认行为一样)。如果你只想恢复原始文件有时,则您必须选择其他答案之一。