如何从 bash 历史记录中删除长命令

如何从 bash 历史记录中删除长命令

有没有一种简单的方法(即 bash 命令)来删除 bash 历史记录中过长的命令?一些长命令基本上使CTRL-R无法使用。 (理想情况下,我将来也不会在历史记录中保存过长的命令。)

答案1

您可以编写一个 bash 函数,如下所示:

myhistory(){
   history -w
   gawk -i inplace '{if(length($0)<60)print}' "$HISTFILE"
   history -c
   history -r
}

当您想要将内存中的历史记录保存到文件中时运行它, history -w然后使用 gnuawk编辑该文件并仅将比您的限制短的行写回其中,此处为 60。清除内存中的历史记录,-c以及从文件中将其读回内存-r

如果您想对输入的每个命令执行此操作,则可以通过设置在每个提示之前调用它PROMPT_COMMAND='myhistory'

答案2

您可以通过命令显示 Bash 历史记录

history

从那里,您可以从历史记录中删除不需要的命令编号n通过命令

history -d <n>

请注意,您可以一次指定(并因此删除)多个命令号。


另外,为了避免将运行命令保存到历史记录中,请在运行该命令之前在该命令前面添加一个空格。

[root@mylinuxbox ~]# cat /etc/hostname

将被保存到历史记录中。

[root@mylinuxbox ~]#  cat /etc/hostname

不会是。

正如@phuclv 在评论中指出的那样,通过设置HISTCONTROL变量(例如在您的 中~/.bashrc)来激活此行为:

export HISTCONTROL=ignorespace

答案3

您可以~/.bash_history使用编辑器进行编辑并删除这些行。

相关内容