如何清除终端历史记录?

Sha*_*ala 118 bash command-history

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

我想完全清除终端历史记录。我曾尝试在终端中使用以下命令,我认为这会永远清除历史记录,但它们没有:

history -c
reset
tput reset
Run Code Online (Sandbox Code Playgroud)

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

如何彻底清除我的终端历史记录 - 永远重新开始?

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

Gil*_*il' 172

reset或者tput reset只对终端做事。历史完全由外壳管理,外壳不受影响。

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

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

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

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

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

  • 首先输入`history`查看历史日志的内容和要删除的行号,假设你要删除历史日志中的1000行号,然后`history -d 1000` (2认同)

小智 47

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

cat /dev/null > ~/.bash_history && history -c && exit
Run Code Online (Sandbox Code Playgroud)

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


小智 21

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

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


小智 8

因为这里存在安全问题,您应该考虑安全地删除历史文件。

$ shred -u ~/.bash_history && touch ~/.bash_history
Run Code Online (Sandbox Code Playgroud)


小智 5

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

rm .bash_history
touch .bash_history
Run Code Online (Sandbox Code Playgroud)

它对我有用而不会引起我所知道的任何令人不快的副作用。


小智 5

类型:history -c; rm ~/.bash_history

history -c清除您当前会话的历史记录,rm ~/.bash_history清除您的长期历史记录,因此history -c; rm ~/.bash_history清除两者。