我试图在日志文件中记录用户的终端会话;相当简单,我为ghci
(交互式Haskell)制作了一个Python包装器,如下所示:
#!/usr/bin/env python
import os
cmd = 'ghci 2>&1 | tee hs.log'
os.system(cmd)
但是,这只会捕获向用户打印的 back ,而不是用户输入的提示/内容。所以如果会话看起来像:
$ ghci 2>$1 | tee hs.log
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
Prelude> 1+2
3
Prelude> 3+4
7
Prelude>
hs.log
只有:
$ cat hs.log
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
3
7
如何在交互式终端会话期间捕获输出和输入?
答案 0 :(得分:3)
您可以使用script
命令捕获输入和输出。
cmd = 'script hs.log ghci'
请注意,这会捕获终端的所有原始输入和输出。您将看到所有用户的编辑,如果程序是全屏的,您将看到所有的转义序列以移动光标。有关完整详细信息,请参阅链接文档。