如何清除终端历史记录?

如何清除终端历史记录?

我使用 Linux Mint 17.1 Rebecca 大约 2 天,不小心在终端中输入了密码,该密码现在显示在我之前输入的命令的历史列表中。

我想彻底清除终端历史记录。我尝试在终端中使用以下命令,我认为这些命令会永远清除历史记录,但它们不会:

history -c
reset
tput reset

上面的命令“将”清除终端中的历史记录,但是当我退出并打开一个新的历史记录时,我以前的所有历史记录仍然存在,并且可以使用 -history 命令再次列出,也可以通过按键盘上的向上箭头来再次列出。我不希望这种情况发生,直到我完全清除我的历史记录,然后我想继续使用它。

我怎样才能完全清除我的终端历史记录 - 永远并重新开始?

请注意:我不想在不保存历史记录的情况下退出终端,只是在这种情况下永远清除它。

答案1

reset或者tput reset只对终端进行操作。历史记录完全由 shell 管理,不受影响。

history -c清除当前 shell 中的历史记录。如果您刚刚输入密码并且尚未退出该 shell 或显式保存其历史记录,这就足够了(但有点过分)。

当您退出 bash 时,历史记录将保存到历史文件中,默认情况下位于.bash_history您的主目录中。更准确地说,当前会话期间创建的历史记录将附加到文件中;已经存在的条目不受影响。要使用当前 shell 的历史记录覆盖历史记录文件,请运行history -w.

.bash_history您可以在编辑器中打开并删除不想保留的行,而不是删除所有历史记录条目。您也可以在 bash 中执行此操作,但不太方便,方法是使用history显示所有条目,然后history -d删除不需要的条目,最后history -w保存。

请注意,如果您有多个正在运行的 bash 实例已读取密码,则每个实例都可能会再次保存该密码。在最终从历史文件中清除密码之前,请确保已从所有正在运行的 shell 实例中清除该密码。

请注意,即使在编辑了历史文件之后,您的密码也可能仍然存在于磁盘上某个早期版本的文件中。它无法再通过文件系统检索,但仍然可以(但可能不容易)通过直接访问磁盘来找到它。如果您在其他地方使用此密码并且您的磁盘被盗(或有人访问了该磁盘),这可能会出现问题。

答案2

我尝试过history -c,但是一旦我们退出并重新打开,历史记录就会回来。这对我有帮助。

cat /dev/null > ~/.bash_history && history -c && exit

这会清除历史文件中保存的历史记录以及当前会话中的历史记录(以便bash退出时不会保存到文件中)。然后它退出外壳。下一个 shell 会话将没有历史记录。

答案3

不要删除所有历史记录条目,而是在终端中输入以下命令:

  1. history -c(用于删除历史记录)
  2. history -w(保存历史记录)

答案4

作为一个面临同样问题的新手,我采取了相当残酷的权宜之计,即删除并重新创建历史文件:-

rm .bash_history
touch .bash_history

它对我有效,但没有产生我所知道的任何令人不快的副作用。

相关内容