我正在写我的PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
,但我仍然从不同的终端会话中得到一些副本。似乎我仍然会得到一些重复但我使用命令PROMPT_COMMAND="history -w;$PROMPT_COMMAND"
得到的更少。
我知道我可以做history -a;history -c; history -r
,但我不希望他们全部同步。我只想在调用历史记录时发生这种情况-n。我基本上是使用历史记录-a或历史-w但我似乎无法找到两者之间的区别。哪一个最好避免尽可能多的重复。
答案 0 :(得分:19)
你说了两个问题:
history -a
和history -w
之间的区别是什么?
history -a
会将当前会话历史记录附加到历史记录文件的内容中。
history -w
将替换历史文件的内容与您当前的会话历史记录。
哪一个避免了更多重复?
理论上也不是。 -a
和-w
都不会检查重复项。实际上-w
避免了更多的重复,因为它取代了历史文件的内容。文件中的任何可能的重复条目以及文件中的任何其他内容都将被删除。
详细了解bash手册中的history
command。
有关杀死重复项的其他可能性的更多信息:
特殊的bash变量HISTCONTROL=ignoredups
在这里没有多大帮助,因为它只会消除在运行的shell中输入的重复项。它不会阻止当前历史记录或历史记录文件中的现有重复项。此外,ignoredups
仅忽略与上一个命令重复的命令,而不是它是以前在历史记录中的任何命令的副本。
不幸的是,即使是很有前途的HISTCONTROL=erasedups
也没有多大帮助。 erasedups
将删除与当前输入的命令匹配的任何历史记录条目。可悲的是,它只在本届会议历史中这样做。它不会在历史文件中搜索重复项。使用history -n
时,它也不会阻止重复输入您的会话历史记录。
详细了解bash手册中的special variable HISTCONTROL
。
答案 1 :(得分:0)
答案 2 :(得分:0)