如何删除bash历史记录中的最后5行?

如何删除bash历史记录中的最后5行? 那么当我重新加载Ubuntu服务器,或重新启动它时,它们根本就不存在?

history -c只从当前会话中删除它,但是当我重新登录时,我再次看到命令,我想清除最后的5个。

我跑了:

history 

然后我会看到命令的数量,例如:

  489 cd .. 490 cd .zshrc 491 cat .zshrc 

然后我跑了例如:

 history -d 489 history -c 

然后我关闭终端并重新打开它,我仍然看到第489行只删除了当前会话,如何从所有会话中删除它?

请指教。

有不同的方法来完成这项任务,但是在进一步说明之前先澄清一下。

有一个名为: ~/.bash_history的文件,其中包含您较旧的终端会话历史记录,每当您关闭终端时,您的历史记录将保存在那里。

同时, history命令可暂时访问旧会话的历史记录以及当前会话的history直到您关闭终端,然后将其保存到~/.bash_history文件中。

因此,如果在~/.bash_history末尾删除5行,则关闭终端将导致您的当前命令在下一个会话中可访问。

所以如果我在.bash_history上做一个wc

 wc -l ~/.bash_history 

大多数时候我会得到比history | wc -l更小的数字 history | wc -l

如果要删除文件的最后5行,可以使用以下命令:

 for i in {1..5}; do sed -i '$d' .bash_history; done; 

如果要保留除当前会话中发出的最后5个命令之外的所有历史记录:

 history | awk '{ print $2 }' | head -n -5 > .bash_history 

不要忘记运行history -c

您可以通过两个步骤使用命令行从历史文件中删除:

键入history -d 将从内存中的历史记录中删除指定的行。 键入history -w将当前的内存中历史记录写入〜/ .bash_history文件。 这两个步骤一起从内存历史记录和.bash_history文件中永久删除该行。

参考: StackExchange

我认为你需要尝试这个非常简单和简单。

  1. 如何删除历史记录没有任何痕迹

     history -d $((HISTCMD-1)) && history -d NO_of_History_you_want_to_delete 
  2. 如果你想在没有任何痕迹的情况下执行命令。

     history -d $((HISTCMD-1)) && type_your_command_here_and_execute 

在编辑器中打开~/.bash_history ,删除最后5行。