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

如何永久清除它们?

#1 楼

文件~/.bash_history保存历史记录。
要完全清除服务器上的bash历史记录,请打开终端,然后键入
cat /dev/null > ~/.bash_history

其他方法是将~/.bash_history链接到/dev/null
,但是,
一个令人讨厌的副作用是历史记录条目在内存中有一个副本,当您注销时它将刷新回文件。
要解决此问题,请使用以下命令(对我有用):
cat /dev/null > ~/.bash_history && history -c && exit


评论


您也可以在.bashrc和.bash_logout中放置上述命令。登录时意味着什么,您将拥有清晰的历史记录;注销时,您的历史记录将被清除

– Qasim
2012年9月23日下午6:06

为什么在那里需要/ dev / null? >〜/ .bash_hstory还不够吗?

–配置器
13年10月10日在4:36

是的,那就足够了!

–来自fromnaboo
13年5月18日在15:40

通过SSH连接时,我尝试在覆盆子盒子上进行此操作。我按照@Qasim的建议将上述命令(cat / dev / null>〜/ .bash_history && history -c && exit)添加到.bashrc和.bash_logout中。现在,只要我通过SSH连接,远程主机就会关闭连接(在打印motd之后)。救命 :/

–高级
2015年2月13日在17:07



展示当您盲目地做事情而没有正确阅读并且不了解处理和数据流时会发生什么。这也显示了不良沟通的陷阱。 devav2所做的只是运行了一次,而Qasim应该写的是删除退出命令,然后再将其添加到登录脚本中。

–斯里兰卡
2015年9月2日,下午4:26

#2 楼

怎么做:

在每个打开的bash外壳中(您可能有多个打开的终端):

history -c
history -w


为什么:
如上所述,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观看//

评论


实际上,另一种方法对我有用。

– kristianp
2014年2月1日下午0:43

在许多情况下,您可以将这两个命令结合在一起:history -cw

–艾略特
2014年4月24日在22:52

由于某些原因,这在Ubuntu 14.04(可能还有其他)上不起作用。应该,但不是。如果发出命令“ history -cw”,则可以使用向上箭头确认不再存在历史记录,但是如果您通过shift +单击终端图标(我有它)来启动另一个终端窗口(在Unity桌面中)固定在启动程序中),无论执行“ history -cw”多少次,命令历史记录都将返回。 “ cat / dev / null>〜/ .bash_history”是对我有用的唯一方法。

– Hatoru Hansou
2014年12月4日在7:20

虽然我不是Ubantu,但可以在OSX中正常使用bash shell。

– SMBiggs
15年1月2日,19:54

是历史记录-c,然后是历史记录-w,您首先要清除历史记录,然后写入更改。可以通过关闭终端然后再次打开来轻松确认这一点,首先使用-w命令再次存在,使用-w最后的历史记录将被有效清除。

– Hatoru Hansou
15年3月25日在7:27

#3 楼

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

history -c && history -w


祝你好运!

评论


比接受的答案好得多。 ;)

– Chiramisu
18-10-3在23:04

如果它解释了这些标志的作用(以及为什么/何时使用它们是正确的命令),那么该答案将更加有用。

– LarsH
19年3月4日在16:37

#4 楼

还有一个更简单的方法:在终端提示符下运行history -cbash_history文件中的所有条目都消失了。

评论


不它不是。注销,登录,向上箭头提供了我所有的信息。您还需要“ history -w”。

–stolsvik
13年11月17日在19:31

如果您阅读了OP的问题,您将知道使用history -c是导致此问题的确切方法。

– J.Money
2015年9月22日在18:41

#5 楼

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

评论


至少在某些美国用户中,注销时〜/ .bash的历史记录会写入磁盘-不确定* buntus。

– d -_- b
2013年6月12日23:41

#6 楼

清除当前shell的历史记录:

history -c


注销时,当前shell的历史记录将附加到〜/ .bash_history,后者是先前shell的历史记录的缓存,达到最大数量(请参见“ man bash”中的HISTFILESIZE)。

如果要完全删除历史记录,则基本上必须清空〜/ .bash_history,以上许多条目已建议这样做。如:

history -c && history -w


这将清除当前shell的历史记录,然后强制当前shell的历史记录(空)覆盖〜/ .bash_history ....或更多准确,它将强制其覆盖HISTFILE(默认为〜/ .bash_history)。

希望有帮助。

评论


您的回答是正确的,但是问题已经有两年了,已经接受了答案,并且包含与您给出的相同的答案。

–查尔斯·格林
2014年7月10日17:47

#7 楼

rm ~/.bash_history; history -c; logout


现在重新登录并见证您的向上箭头没有提供任何帮助。

评论


@KasiyA这是关于服务器和ssh会话的,因此无需编辑...

– RaduRădeanu
14-10-20在20:29

#8 楼

试试这个

编辑您的.profile,并在文件末尾添加以下行

rm -f .bash_history


这样,每次登录时,它将自动为您删除.bash_history文件。添加-r递归删除选项似乎很危险,不需要。