有没有一种简单的方法(即 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
使用编辑器进行编辑并删除这些行。