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

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

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

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

我已经跑过:

history

然后我将看到命令的编号,例如:

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

然后我运行例如:

history -d 489
history -c 

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

答案1

您可以使用命令行分两步从历史文件中删除:

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

来源:超级用户-从 Bash 历史文件中删除某一行

答案2

我认为你需要尝试一下这个,它非常容易和简单。

  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
    

答案3

有不同的方法可以完成这项任务,但在进一步讨论之前,让我们先澄清一些事情。

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

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

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

因此,如果我在 .bash_history 上执行wc

wc -l ~/.bash_history

大多数时候我得到的数字都会小于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也跑步哦。

答案4

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

相关内容