我想彻底清除终端历史记录。我曾尝试在终端机中使用以下命令,但我认为它们会永远清除历史记录,但它们并不会清除这些历史记录:
history -c
reset
tput reset
以上命令“将”清除历史记录终端,但是当我退出并提出一个新的终端时,我以前的所有历史记录仍然存在,并且可以使用-history命令并按键盘上的UP箭头再次列出所有历史记录。在完全清除历史记录之前,我不希望发生这种情况,然后再继续使用它。
如何彻底清除终端历史记录-永远重新开始?
请注意:我不想在不保存历史记录的情况下退出终端,只是在这种情况下将其永久清除。
#1 楼
reset
或tput reset
仅对终端起作用。历史记录完全由外壳程序管理,而该外壳程序不受影响。history -c
清除当前外壳程序中的历史记录。如果您只是键入密码而没有退出该shell或未明确保存其历史记录,就足够了(但会过分杀伤)。退出bash时,历史记录将保存到历史记录文件中默认情况下,您的主目录中为
.bash_history
。更准确地说,将在当前会话期间创建的历史记录添加到文件中;已经存在的条目不受影响。要使用当前Shell的历史记录覆盖历史记录文件,请运行history -w
。您可以在编辑器中打开.bash_history
并删除不需要保留的行,而不是删除所有历史记录条目。您还可以在bash中执行此操作,使用history
显示所有条目,然后使用history -d
删除不需要的条目,最后使用history -w
保存,这样不太方便。请注意,如果您有多个正在运行的bash实例已读取密码,每个实例可能会再次保存它。在从历史记录文件中清除密码之前,请确保已从所有正在运行的Shell实例中清除该密码。
请注意,即使在编辑了历史记录文件之后,您的密码仍然可能存在文件早期版本在磁盘上的某个位置。无法再通过文件系统检索它,但是仍然有可能(但可能不容易)通过直接访问磁盘来找到它。如果您在其他地方使用此密码而磁盘被盗(或有人可以访问该磁盘),则可能是一个问题。
评论
我喜欢您的回答,并且会接受您告诉我的很多我不知道的事情,这些事情非常有用。我还将更改我的密码!
–香巴拉(Shambhala)
2015年5月14日,0:21
首先键入历史记录以检查历史记录日志的内容和要删除的行号,假设您要删除历史记录日志中的行号1000,然后输入history -d 1000
–克劳德·库卢姆
19 Mar 6 '19 at 20:37
如果我直接修改.bash_history文件,history命令仍会显示修改前的命令,直到我注销/登录为止。
–墨西哥卷饼
19 Mar 8 '19在15:44
即使从.bash_history文件中将其删除后,也要从所有bash会话中注销,然后再次登录以再次检查您的会话是否都没有缓存历史记录的任何部分,这可能会使该行重新存在。另外,检查您的.viminfo文件,该文件可能已经缓存了使用vim进行的密码搜索。
– jrw32982
20 Mar 11 '20 at 20:15
#2 楼
我曾尝试过history -c,但是一旦退出并重新打开,历史记录就会重新出现。这对我有帮助。当前会话中的历史记录(以便退出bash
时不会保存到文件中)。然后退出外壳。下一个Shell会话将没有历史记录。评论
我正在使用不使用bash的Pod上工作,并且历史记录文件位于.ash_history中。我刚刚用vi进行了编辑。
– Nagev
20 Mar 12 '20 at 17:10
#3 楼
而不是删除所有历史记录条目,请在终端中键入以下命令:history -c
(用于删除历史记录)history -w
(保存历史记录) 评论
如果设置了inc_append_history或share_history选项,对于zsh来说这还不够。
–传奇
17年5月17日在8:33
#4 楼
由于此处存在安全问题,因此您应考虑安全删除历史记录文件。$ shred -u ~/.bash_history && touch ~/.bash_history
#5 楼
作为面临同样问题的新手,我诉诸删除和重新创建历史记录文件的相当残酷的权宜之计:-rm .bash_history
touch .bash_history
我知道的任何不愉快的副作用。
#6 楼
类型:history -c; rm ~/.bash_history
history -c
清除您当前会话的历史记录,rm ~/.bash_history
清除您的长期历史记录,因此history -c; rm ~/.bash_history
清除这两个历史记录。评论
说明可以帮助OP更好地理解。
–杂种
16/12/15在7:54
#7 楼
我将这两个命令一起使用,可以完美清除所有内容:>~/.bash_history;history -cw;
评论
sed -i“ s / $ your_pass // g”〜/ .bash_history ...@jasonwryan仅凭此一项并不能解决问题,因为sed命令最终会出现在shell历史中。
我尝试使用@jasonwryan的代码,但得到了:sed:-e表达式#1,字符0:没有以前的正则表达式,我认为我知道为什么,这导致我从搜索和一些弄乱中得出: cat / dev / null>〜/ .bash_history && history -c && exit
@Gilles:您是对的:在命令前应该有一个空格...