我已经配置了自己的export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
export HISTFILE=~/.bash_myhistory
PROMPT_COMMAND="history -a; history -r; $PROMPT_COMMAND"
history
当我运行 $ history | grep 'git rebase'
75 [2018-05-23 16:39:39] git rebase -p dev_hypermouse
168 [2018-05-23 19:27:39] man git rebase
547 [2018-05-25 19:01:44] git rebase master
639 [2018-05-25 20:24:52] git rebase master
869 [2018-05-28 14:07:33] git rebase xxx
921 [2018-05-28 16:12:20] git rebase dash_v2
922 [2018-05-28 16:12:33] man git rebase
925 [2018-05-28 16:13:21] man git rebase
927 [2018-05-28 16:15:42] git rebase xxx dash_v2
937 [2018-05-28 16:17:46] git rebase --onto dash_v2 xxx 296-ToS-component
2177 [2018-05-23 16:39:39] git rebase -p dev_hypermouse
2270 [2018-05-23 19:27:39] man git rebase
2649 [2018-05-25 19:01:44] git rebase master
2741 [2018-05-25 20:24:52] git rebase master
2971 [2018-05-28 14:07:33] git rebase xxx
3023 [2018-05-28 16:12:20] git rebase dash_v2
3024 [2018-05-28 16:12:33] man git rebase
3027 [2018-05-28 16:13:21] man git rebase
3029 [2018-05-28 16:15:42] git rebase xxx dash_v2
3039 [2018-05-28 16:17:46] git rebase --onto dash_v2 xxx 296-ToS-component
4239 [2018-05-23 19:27:39] man git rebase
4618 [2018-05-25 19:01:44] git rebase master
4710 [2018-05-25 20:24:52] git rebase master
4940 [2018-05-28 14:07:33] git rebase xxx
4992 [2018-05-28 16:12:20] git rebase dash_v2
4993 [2018-05-28 16:12:33] man git rebase
4996 [2018-05-28 16:13:21] man git rebase
4998 [2018-05-28 16:15:42] git rebase xxx dash_v2
5008 [2018-05-28 16:17:46] git rebase --onto dash_v2 xxx 296-ToS-component
...
时,它会向我显示许多重复输出:
$ cat ~/.bash_myhistory | grep 'git rebase'
但man git rebase
git rebase master
git rebase master
git rebase xxx
git rebase dash_v2
man git rebase
man git rebase
git rebase xxx dash_v2
git rebase --onto dash_v2 xxx 296-ToS-component
man git rebase
man git rebase
history | grep git rebase
history | grep 'git rebase'
没有:
history
如何修复export HISTCONTROL=ignoreboth:erasedups
的重复输出?
UPD
$ history | grep 'git rebase'
34 [2018-05-23 19:27:39] man git rebase
413 [2018-05-25 19:01:44] git rebase master
505 [2018-05-25 20:24:52] git rebase master
735 [2018-05-28 14:07:33] git rebase xxx
787 [2018-05-28 16:12:20] git rebase dash_v2
788 [2018-05-28 16:12:33] man git rebase
791 [2018-05-28 16:13:21] man git rebase
793 [2018-05-28 16:15:42] git rebase xxx dash_v2
803 [2018-05-28 16:17:46] git rebase --onto dash_v2 xxx 296-ToS-component
2038 [2018-06-02 14:49:31] man git rebase
2058 [2018-06-02 14:52:33] man git rebase
2060 [2018-06-02 15:11:08] history | grep git rebase
2061 [2018-06-02 15:11:13] history | grep 'git rebase'
2063 [2018-06-02 15:12:45] cat .bash_myhistory | grep 'git rebase'
2064 [2018-06-02 15:09:58] man git rebase
2077 [2018-06-02 15:35:41] history | grep 'git rebase'
2111 [2018-05-23 19:27:39] man git rebase
2490 [2018-05-25 19:01:44] git rebase master
2582 [2018-05-25 20:24:52] git rebase master
2812 [2018-05-28 14:07:33] git rebase xxx
2864 [2018-05-28 16:12:20] git rebase dash_v2
2865 [2018-05-28 16:12:33] man git rebase
2868 [2018-05-28 16:13:21] man git rebase
2870 [2018-05-28 16:15:42] git rebase xxx dash_v2
2880 [2018-05-28 16:17:46] git rebase --onto dash_v2 xxx 296-ToS-component
4115 [2018-06-02 14:49:31] man git rebase
4135 [2018-06-02 14:52:33] man git rebase
4137 [2018-06-02 15:11:08] history | grep git rebase
4138 [2018-06-02 15:11:13] history | grep 'git rebase'
4140 [2018-06-02 15:12:45] cat .bash_myhistory | grep 'git rebase'
4141 [2018-06-02 15:09:58] man git rebase
4154 [2018-06-02 15:35:41] history | grep 'git rebase'
历史记录看起来好多了,但重复数据仍然存在:
export HISTCONTROL=ignoreboth:erasedups
UPD
即使在添加25988 [2018-07-26 17:13:19] gd 1
25989 [2018-07-26 15:45:47] mc
25990 [2018-07-26 13:57:46] mc
25991 [2018-07-26 09:23:28] mc
历史记录之后,也会如此:
process.webpackModule
另外我注意到一些命令从历史记录中消失=(
答案 0 :(得分:3)
export HISTCONTROL=ignoreboth:erasedups
来自bash手册页:
HISTCONTROL
以冒号分隔的值列表,用于控制命令在历史记录列表中的保存方式。如果值列表包含ignorespace, 以空格字符开头的行不会保存在历史记录中 名单。 ignoredups的值会导致与先前历史记录匹配的行 输入不保存。 ignoreboth的值是简写 ignorespace和ignoredups。 erasedups的值会导致之前的所有内容 与要从历史记录列表中删除的当前行匹配的行 在该行保存之前。忽略上面列表中没有的任何值。 如果未设置HISTCONTROL,或者未包含有效值,则为所有行 shell解析器读取的内容保存在历史列表中,受制于 HISTIGNORE的价值。多行的第二行和后续行 复合命令未经过测试,并被添加到历史记录中 无论HISTCONTROL的价值如何。