如何捕捉stdout/stderr中的提示?
How to capture prompts in stdout/stderr?
我正在尝试在日志文件中记录用户的终端会话;相当简单,我为 ghci
(交互式 Haskell)制作了一个 Python 包装器,看起来像:
#!/usr/bin/env python
import os
cmd = 'ghci 2>&1 | tee hs.log'
os.system(cmd)
但是,这只会捕获向用户打印 back 的内容,而不是 prompts/what 用户输入的内容。所以如果会话看起来像:
$ ghci 2> | 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
如何在交互式终端会话期间捕获输出和输入?
您可以使用 script
命令捕获输入和输出。
cmd = 'script hs.log ghci'
请注意,这会捕获终端的所有原始输入和输出。你会看到所有用户的编辑,如果程序是全屏的,你会看到它的所有转义序列来移动光标。有关完整详细信息,请参阅链接文档。
我正在尝试在日志文件中记录用户的终端会话;相当简单,我为 ghci
(交互式 Haskell)制作了一个 Python 包装器,看起来像:
#!/usr/bin/env python
import os
cmd = 'ghci 2>&1 | tee hs.log'
os.system(cmd)
但是,这只会捕获向用户打印 back 的内容,而不是 prompts/what 用户输入的内容。所以如果会话看起来像:
$ ghci 2> | 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
如何在交互式终端会话期间捕获输出和输入?
您可以使用 script
命令捕获输入和输出。
cmd = 'script hs.log ghci'
请注意,这会捕获终端的所有原始输入和输出。你会看到所有用户的编辑,如果程序是全屏的,你会看到它的所有转义序列来移动光标。有关完整详细信息,请参阅链接文档。