我在 .bash_profile 中使用以下代码来过滤和删除重复的 bash 历史记录:
shopt -s histappend
HISTSIZE=100000
HISTFILESIZE=100000
HISTCONTROL=ignoredups:erasedups
PROMPT_COMMAND="history -a;history -c;history -r;$PROMPT_COMMAND"
它运行良好,但是产生了以下副作用:
假设我打开了两个终端/选项卡:
- 第一个选项卡:文件夹:
~
,最后运行的命令:(wget big_file...
或任何较长的内容) - 第二个选项卡:文件夹:一些随机临时文件夹,最后运行命令:
rm -rf *
现在,如果我从第二个选项卡转到第一个选项卡,然后按向上键,它会重新运行最后一个命令,就像一切正常一样。
现在危险来了:如果我再次按下“UP”,它就会插入rm -rf *
,如果我没有注意到,我刚刚删除了所有数据。
您能否推荐一个用于历史记录的 .bash_profile 设置,它可以执行重复数据删除/过滤但不允许此类事情发生?
答案1
您可以用来HISTIGNORE
忽略那些您认为危险的。
HISTIGNORE='rm -rf *:dangercmd -c 2:echo and so on'