我已经配置好了自己的 .bash_myhistory
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
?
UPD
与export HISTCONTROL=ignoreboth:erasedups
历史看起来好多了,但复制仍然存在:
$ 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'
UPD
即使添加export HISTCONTROL=ignoreboth:erasedups
历史记录也如下所示:
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
我也注意到一些命令从历史=(
export HISTCONTROL=ignoreboth:erasedups
从bash手册页:
历史控制
用冒号分隔的值列表,用于控制如何在历史记录列表中保存命令。如果值列表包含ignorespace,则以空格字符开头的行不会保存在历史记录列表中。忽略的值将导致不保存与上一个历史记录条目匹配的行。ignoreboth的值是ignorespace和ignoreups的简写。擦除值的值导致在保存该行之前,将与当前行匹配的所有先前行从历史记录列表中删除。不在上面列表中的任何值都将被忽略。如果未设置HISTCONTROL或不包含有效值,则由外壳解析器读取的所有行都将存储在历史记录列表中,但要遵循HISTIGNORE的值。多行复合命令的第二行和后续行未经测试,并且无论HISTCONTROL的值如何都添加到历史记录中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句