如何彻底清除 bash 历史记录?

hd.*_*hd. 318 bash history

我想从我的服务器的历史记录中清除所有以前的命令。我使用过history -c,似乎所有内容都已清除,但是当我通过 ssh 连接到服务器时,所有命令仍然存在。

如何永久清除它们?

dev*_*av2 424

该文件~/.bash_history保存历史记录。

要完全清除服务器上的 bash 历史记录,请打开终端并键入

cat /dev/null > ~/.bash_history
Run Code Online (Sandbox Code Playgroud)

其他替代方法是链接~/.bash_history/dev/null

然而,

一个令人讨厌的副作用是历史条目在内存中有一个副本,当您注销时它会刷新回文件

要解决此问题,请使用以下命令(对我有用):

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

  • 为什么你需要 /dev/null 那里?`> ~/.bash_hstory` 还不够吗? (28认同)
  • 你也可以把上面的命令放在 .bashrc 和 .bash_logout 中。这意味着当您登录时,您将拥有清晰的历史记录,而当您注销时,您的历史记录将被清除 (18认同)
  • 去展示当你盲目地做事而不正确阅读并且不了解处理和数据流时会发生什么。它还显示了不良沟通的陷阱。devav2 所做的是运行一次,而 Qasim 应该写的是在将其添加到登录脚本之前删除退出命令。 (15认同)
  • 是的,这就足够了! (4认同)
  • 我尝试在通过 SSH 连接时在树莓盒上执行此操作。我按照@Qasim 的建议将上述命令( cat /dev/null > ~/.bash_history && history -c && exit )添加到 .bashrc 和 .bash_logout 。现在,只要我通过 SSH 连接,远程主机就会关闭连接(打印 motd 后)。帮助 :/ (3认同)

小智 176

该怎么办:

每个打开的 bash shell 中(您可能打开了多个终端):

history -c
history -w
Run Code Online (Sandbox Code Playgroud)

原因:如上所述,history -c清空文件~/.bash_history. 需要注意的是,bash shell 不会立即将历史记录刷新到 bash_history 文件中。因此,重要的是 (1) 将历史记录刷新到文件中,以及 (2)在所有终端中清除历史记录。这就是上面的命令所做的。

参考:http : //www.giannistsakiris.com/index.php/2007/09/13/how-to-clear-bash-history-and-what-to-watch-out-for/

  • 在很多情况下,您可以将这两个命令组合在一起:`history -cw` (31认同)
  • 是history -c 然后history -w,你首先清除历史然后写入更改。这很容易通过关闭终端并再次打开来确认,-w first 命令再次出现,-w last 历史记录被有效清除。 (4认同)
  • 实际上,相反的方式对我有用。 (3认同)
  • 出于某种原因,这不适用于 Ubuntu 14.04,也可能是其他。它应该但它没有。如果您发出命令“history -cw”,您可以使用向上箭头确认历史不再存在,但是如果您使用 shift + 单击终端图标(我有它)启动另一个终端窗口(在 Unity 桌面中)固定在启动器中)命令历史记录又回来了,不管你做了多少次“history -cw”。“cat /dev/null > ~/.bash_history”是对我有用的唯一方法。 (2认同)

小智 74

执行以下命令永久清除历史记录

history -c && history -w
Run Code Online (Sandbox Code Playgroud)

祝你好运!

  • 比接受的答案要好得多。;) (3认同)
  • 如果它解释了这些标志的作用(以及为什么/何时使用它们是正确的命令),那么这个答案会更有帮助。 (2认同)

小智 19

还有另一个更简单的:history -c在终端提示符下运行并且bash_history文件中的所有条目都消失了。


Anw*_*war 10

另一种方法是~/.bash_history使用rm ~/.bash_history命令删除文件。当您再次登录时,.bash_history将自动创建该文件。

  • 至少在某些操作系统上,当您注销时 ~/.bash_history 会写入磁盘 - 不确定 *buntus。 (4认同)

小智 9

清除当前 shell 的历史记录:

history -c
Run Code Online (Sandbox Code Playgroud)

当您注销时,当前 shell 的历史记录会附加到 ~/.bash_history 中,它是以前 shell 历史记录的缓存,最大数量(请参阅“man bash”中的 HISTFILESIZE)。

如果您想完全删除历史记录,那么您基本上必须清空以上许多条目所建议的 ~/.bash_history 。如:

history -c && history -w
Run Code Online (Sandbox Code Playgroud)

这会清除当前 shell 的历史记录,然后强制当前 shell 的历史记录(空)覆盖 ~/.bash_history....或者更准确地说,它会强制它覆盖 HISTFILE(默认为 ~/.bash_history)。

希望这可以帮助。

  • 你的回答是准确的,但这个问题已经两年了,已经接受了答案,并且包含了你给出的相同答案。 (4认同)

sto*_*vik 6

rm ~/.bash_history; history -c; logout
Run Code Online (Sandbox Code Playgroud)

现在重新登录并见证你的箭头没有给你任何东西。