Linux命令查看两个或多个开放终端的历史记录?

时间:2015-08-04 10:58:07

标签: linux bash shell terminal

如果我打开三个终端,Linux终端命令将帮助我在一个终端中查看三个终端历史记录。我遵循了Linux命令historyhistory | more。因此,我得不到所需的输出。

1 个答案:

答案 0 :(得分:2)

默认情况下,Bash会在~/.bash_history中保留命令历史记录。通常,只有在Bash退出时才会写入文件,因此无法访问其他会话。历史。

但是,内置history命令有几个开关来控制历史记录持久性:

  • -w会写会话的历史记录并替换文件
  • -r从文件中读取历史记录并替换会话的历史记录
  • -a仅添加会话中添加的行
  • -n读取文件并添加不在当前会话中的条目
  • -c清除会话的历史记录

如果您不介意I / O开销,可以在每个命令之后执行这些操作的组合,方法是将其添加到$PROMPT_COMMAND中的~/.bashrc

  • 我首先测试了从其他会话中读取新条目的更明显的方法,然后坚持所有:

    PROMPT_COMMAND='history -n ; history -w'
    

    虽然这基本上可行,但有时会丢失单个条目,我不确定原因。

  • Unix & Linux借来的以下解决方案效果更好(它会附加一个项目,清除会话历史记录,然后重新阅读):

    PROMPT_COMMAND='history -a ; history -c ;  history -r'