bash 如何从历史记录中删除单个命令

How to delete a single command from history in bash

经过一些在线搜索后,我发现以下命令应该从 bash 历史记录中删除一个条目:

$ history -d <number>

假设我想从历史记录中删除这一行,因为我拼错了 git :

10003 gti add . && git commit -m

当我执行以下命令时:

$ history -d 10003

它仍然出现在我的历史记录中,即使我重新启动了终端

所以知道我该如何解决这个问题,因为我使用自动完成,有时尤其是在使用 git 时,它会变得有点混乱。

Bash 中的命令历史记录既存储在内存中,通常用于当前 shell 会话,也存储在磁盘上,默认情况下存储在 ~/.bash_history 中。默认的历史记录配置可能会在会话终止时将内存中的会话附加到磁盘上的文件,但是有很多旋钮需要调整。

无论如何,要从历史记录中永久删除命令,您可能必须直接编辑 ~/.bash_history 文件。

历史设置的几点参考:

  • HISTFILE – 保存历史的文件(默认为~/.bash_history
  • HISTFILESIZE – 历史文件中存储的命令数(默认为HISTSIZE
  • HISTSIZE – 存储在(内存中)历史列表中的命令数(默认为 500)
  • cmdhist – shell 将多行命令保存在单个历史条目中的选项
  • histappend – shell 选项来控制是否将历史列表附加到历史文件,或者是否覆盖历史文件
  • lithist – shell 使用换行符而不是分号存储多行命令的选项

原来是通过删除 ~/bash_history

中的命令解决了这个问题