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

标签 linux bash shell terminal

<分区>

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

最佳答案

Bash 默认将命令历史记录保存在 ~/.bash_history 中。通常,该文件仅在 Bash 退出时写入,因此无法访问其他 session 的历史记录。

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

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

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

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

    PROMPT_COMMAND='history -n ; history -w'
    

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

  • 以下解决方案借自 Unix & Linux效果更好(它将附加一项,清除 session 历史记录,然后重新读取它):

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

关于Linux命令查看两个或多个打开终端的历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31807474/

相关文章:

c - 为什么我必须先声明一个不相关的 struct file_handle 变量才能使用该类型?

linux - 如何从linux内核模块(cpu : ARM))写入寄存器

bash - 将 2 行组合在一起但 "interlaced"

bash - 将 stderr/stdout 消息发送到函数并捕获退出信号

linux - 保留最近的 3 个文件夹并删除 bash 脚本中的其余文件夹?

linux - 将 "read"用于变量中未知数量的输入

linux - 如何计算文档中的行数?

c++ - 在 C++ 中,当我对 -128,127 范围之外的整数值使用 static_cast<char> 时会发生什么?

bash - (仅)当之前的作业在 Bash 中完成时才执行命令

c - Linux终端中的shell程序