所以我知道~/.bash_history
应该是存储所有历史记录的文件,您只需输入即可history
查看该文件的所有内容。
为什么我的.bash_history
文件只有 5 个条目却history
显示 135 个结果?
我想从历史记录中删除我看到的某个条目,但如果不想删除,该~/.bash_history
如何删除它?
答案1
这里有一个小误会,history
是吗不是显示 的内容~/.bash_history
。相反,它显示 Bash 的历史列表以此来纪念这次会议。
假设 Bash 和 Ubuntu 的默认设置,历史管理的工作方式如下:
每当您打开 Bash shell 时,它都会读取您的文件内容
.bash_history
并将其附加到其会话历史记录列表中。您输入命令,导致 Bash 将它们附加到其会话历史记录列表中。
当您再次关闭 shell 时,Bash 会通过将包含的条目附加到文件来将其历史记录列表保存到磁盘
.bash_history
。
注意:默认情况下,历史列表最多会被截断为 1000 个条目,历史文件最多会被截断为 2000 个条目。
你看,历史文件在特定 shell 会话结束之前永远不会更新,所以你在当前终端窗口中所做的一切都不会保存到磁盘上。它只驻留在内存中的历史列表中。
要从历史列表中清除特定条目,您可以运行history
以显示完整列表并找出有问题的条目的索引号。然后您可以使用
history -d NUMBER
您也可以使用 简单地擦除完整的会话历史记录列表history -c
。
请注意,如果条目已写入历史记录列表中,则从历史记录列表中删除条目不会自动将其删除.bash_history
,但是如果您打开了任何 Bash 会话,则从文件中删除条目也不会将其从当前会话历史记录列表中删除。
要从历史文件中删除条目,请~/.bash_history
在文本编辑器中打开并删除其中有问题的行。您应该在此之前关闭所有终端并使用 GUI 编辑器,或者确保从文件和会话列表中删除该条目。
有关该history
命令的更多信息,请键入help history
。
有关 Bash 及其历史记录管理的更多信息,请阅读 的相关部分man bash
。
答案2
编辑 ~/.bash_history 文件的另一种方法是运行:
$ history -d ### && history -w
这将从内存中删除该行,然后将内存中更新的历史记录写入 ~/.bash_history 文件。