是否可以忽略或删除终端历史记录中的重复条目?现在,当我单击向上箭头浏览以前的命令时,有很多重复项,或者当我使用history命令时,它显示了很多重复项。万神殿终端有能力删除/忽略那些重复的条目吗?

评论

这是bash的功能,而不是终端的功能。在所有终端和所有发行版中,其工作原理都是相同的。 .bashrc的全部内容是什么?您是否启动了新终端?您在哪里添加了设置-默认.bashrc已经包含了HISTCONTROL的设置?

几次重新启动,设置最终“生效”。我在〜/ .bashrc文件的底部添加了导出HISTCONTROL = ignoreboth:erasedups。感谢您对吉尔的帮助。

@dazzle,请发布答案。

这还不清楚吗?他想从bash历史记录中删除重复项。甚至还有答案。

@Tim不清楚问题是什么。这个问题不是在问如何从bash历史记录中删除重复项,而是在问题中进行了说明。可以通过编辑该问题以将其删除以保留仅保留有关如何删除重复项的问题。

#1 楼

命令历史记录是bash外壳程序的功能,而不是终端仿真器Pantheon-Terminal。

可以通过设置一些名称以start开头的变量来配置bash命令历史记录中有关重复项的行为。与HIST。特别是,HISTCONTROL是用于调整行为的选项列表。如果包括选项ignoredups,则不会将重复项添加到历史记录中。我认为更有用的是,如果包括erasedups,则在发出重复命令时,将从列表中删除较早的重复项。因此,ignoredups会将副本保留在最早的位置,而erasedups会将副本保留在最新的位置。

设置此变量的位置是主目录中的bash交互式初始化文件.bashrc。在文本编辑器中打开此文件。添加类似

HISTCONTROL=erasedups


的行,多个选项用冒号分隔,因此例如,如果您要忽略以空格开头的行,则需要

HISTCONTROL=erasedups:ignorespace


保存.bashrc。这些更改将在您下次启动bash时生效,即下次您打开终端或新标签页时生效。您也可以在bash命令行中键入此命令,它将对在其中键入它的Shell会话生效。

请注意,基本OS上的默认.bashrc已包含HISTCONTROL的设置。因此,您需要编辑现有的HISTCONTROL=…行,或在文件末尾添加自己的行(如果在开头添加设置,则将被覆盖)。

#2 楼

OP在评论中回答:


几次重新启动,设置最终“生效”。我在export HISTCONTROL=ignoreboth:erasedups文件的底部添加了~/.bashrc。感谢您对吉尔斯的帮助。


#3 楼

唯一地记录每个新命令是很棘手的。首先,您需要添加到
~/.profile或类似的产品:

HISTCONTROL=erasedups
PROMPT_COMMAND='history -w'


,然后您需要添加到~/.bash_logout

history -a
history -w