历史-a vs历史-w在BASH

J S*_*pen 14 bash terminal gnome-terminal

我正在写我的PROMPT_COMMAND="history -a;$PROMPT_COMMAND"但我仍然从不同的终端会话中获得一些重复.似乎我仍然会得到一些重复,但我使用命令得到的更少PROMPT_COMMAND="history -w;$PROMPT_COMMAND".

我知道我可以做到,history -a;history -c; history -r但我不希望他们全部同步.我只想在调用历史记录时发生这种情况-n.我基本上是使用历史记录-a或历史-w但我似乎无法找到两者之间的区别.哪一个最好避免尽可能多的重复.

les*_*ana 20

你说了两个问题:

history -a和之间有什么区别history -w

history -a将您当前的会话历史记录附加到历史记录文件的内容中.

history -w将使用您当前的会话历史记录替换历史记录文件的内容.

哪一个避免了更多重复?

理论上也不是.既不检查重复-a也不-w检查.实际上-w避免了更多的重复,因为它取代了历史文件的内容.消除文件中任何可能的重复条目以及文件中的任何其他条目.

在bash手册中阅读有关该history命令的更多信息.


有关杀死重复项的其他可能性的更多信息:

特殊的bash变量HISTCONTROL=ignoredups在这里没有多大帮助,因为它只消除了在运行的shell中输入的重复项.它不会阻止当前历史记录或历史记录文件中的现有重复项.此外,ignoredups只忽略与前一个命令重复的命令,而不是它是以前在历史记录中的任何命令的副本.

不幸的是,即使是很有希望也没有多大HISTCONTROL=erasedups帮助.erasedups擦除与当前输入的命令匹配的任何历史记录条目.可悲的是,它只在本届会议历史中这样做.它不会在历史文件中搜索重复项.它也不会阻止重复使用时输入您的会话历史记录history -n.

阅读bash手册中有关特殊变量的HISTCONTROL更多信息.