使用多个终端处理Bash历史记录

我主要使用终结者,它通常用3个分割终端窗口打开。 我也出于各种原因使用Gnome终端。
我想知道在这种情况下如何处理bash历史记录,因为我在运行history时有时会错过以前发出的命令

例如,我的提示显示当前的bash历史记录行( \! ),如果我启动带有3个分割终端窗口的终结者,我会在所有终端上获得相同的历史记录行(假设为100)。 哪个历史会被保存?

在使用终结器后启动Gnome终端我在启动时获得第100行,而不管之前在终结器中发出的所有命令

保存的bash会话是最近关闭的终端的会话。 如果要为每个会话保存命令,可以使用此处说明的技巧。

 export PROMPT_COMMAND='history -a' 

引用联机帮助页:“如果设置,则在发出每个主要提示之前将该值作为命令执行。”

所以每次我的命令完成后,它~/.bash_history在显示提示符(仅$ PS1)之前将未~/.bash_history历史记录项附加到~/.bash_history

因此,在将该行放入/etc/bash.bashrc后,我不必发现自己重新发明轮子或丢失宝贵的秒数重新输入内容,因为我对我的终端很懒。

无论如何,您需要考虑来自不同会话的命令将混合在您的历史记录文件中,以便稍后阅读它不会那么简单。

也可以看看:

在多次读取man bash ,我为每个shell使用单独的历史文件。 我做了一个mkdir -m 0700 ~/.history然后补充说

 [[ -d ~/.history ]] || mkdir --mode=0700 ~/.history [[ -d ~/.history ]] && chmod 0700 ~/.history HISTFILE=~/.history/history.$$ # close any old history file by zeroing HISTFILESIZE HISTFILESIZE=0 # then set HISTFILESIZE to a large value HISTFILESIZE=4096 HISTSIZE=4096 

到我的~/.bashrc 。 我du -sk .history记得du -sk .history并清理它。 我为我输入的每个命令都很好。

我刚才用上面的内容来看看我最近在做什么:
cut -f1 "-d " .history/* | sort | uniq -c |sort -n -r |less
要么
cut -f1-2 "-d " .history/* | sort | uniq -c |sort -n -r |less
(包括第一个参数,例如排序链中的sudo mount )。

另请参阅“ 将bash中的持久历史记录保留 ”。 它可以根据您的提示将所有输入任何终端的命令发送到“持久历史记录”文件中(与常规.history通常所做的.history )。

显示所有终端的history

添加export PROMPT_COMMAND='history -a; history -r' export PROMPT_COMMAND='history -a; history -r'到您的.bashrc文件。

资料来源: http : //northernmost.org/blog/flush-bash_history-after-each-command