是否可以获取在父终端中运行的最后一个命令?

时间:2017-06-28 04:50:09

标签: linux bash shell pty

我正在尝试以编程方式从子进程内的bash终端获取历史记录(go executable)。我基本上是在寻找终端运行的最后N个命令。

流速:

  1. open bash terminal PID = 5
  2. 运行一些命令(sed,rpm,gpg)
  3. run go executable PID = 32 PPID = 5
  4. 从父进程(bash终端)获取命令和参数(sed,rpm,gpg)并打印它们
  5. 在go / shell out下运行时,内置history的bash不会产生正确的结果。

    阅读~/.bash_history并不准确,因为在提示结束时会写入bash终端的历史记录。

    想知道这是否可行?

1 个答案:

答案 0 :(得分:1)

根据建议here,您可以将新命令保存到history -a <file_path>的文件中,然后在子进程中,您可以读取文件中的最后N行(使用tail -n <N>)。