重击历史
可以.bash_history
使用以下命令将在活动终端中发出的所有新命令附加到文件中:
history -a
唯一需要理解的棘手概念是每个终端都有自己的bash历史记录列表(.bash_history
打开终端时从文件中加载)
如果要在此活动终端的生存期内提取由其他终端写入的任何新历史记录,则可以将.bash_history
文件内容附加到活动bash历史记录列表中
history -c;history -r
这将清除当前历史记录列表,因此我们不会得到重复的列表,而是将历史记录文件追加到(现在为空)列表中。
解
您可以使用bash变量PROMPT_COMMAND
在每个新提示下发出命令(每次在终端中按Enter键)
export PROMPT_COMMAND='history -a'
它将在发出命令时将每个命令记录到历史文件中。
结果
现在,您打开的任何新终端都将具有其他终端的历史记录,而无需访问exit
其他终端。这是我首选的工作流程。
更精确
假设(由于某种原因)您有两个同时使用的终端,并且您希望历史记录可以在每个新命令之间反映出来。
export PROMPT_COMMAND='history -a;history -c;history -r'
这里的主要缺点是您可能需要按Enter才能重新运行PROMPT_COMMAND,以便从对端终端获取最新历史记录。
您会看到为什么这个更精确的选项可能过大,但它适用于该用例。