如何从tcl脚本中记录xterm窗口

时间:2014-03-04 09:08:07

标签: linux terminal tcl xterm terminal-emulator

我正在通过exec xterm -geometry 78x36+0+0 -fn "-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1" -sl 10000 -sb -bg white -bd white -into....从我的tcl打开一个xterm窗口。我正在这个模拟终端上执行其他命令。现在我想将这些命令的输出记录到同一个tcl脚本的文件中。 任何人都可以知道如何做到这一点......?

提前致谢 murali krishna

1 个答案:

答案 0 :(得分:0)

从外部捕获 - 从执行exec xterm … -into …的脚本的角度来看 - 是非常困难的,因为在辅助窗口上绘制某些东西时没有事件(除了在一个你实际上不想要的情况下)他们最后只看到了很多关于发生的事情的位图;大而且真的没有信息。你需要使用不同的方法;您需要从 内部 中捕获,以记录用户在终端上看到的内容。幸运的是,这实际上并不难做到。

要完整记录终端内部发生的事情(终端程序本身不提供该功能),最好的办法是在终端内运行一个小的Expect脚本。

package require Expect

log_file /tmp/somefile.log
spawn $env(SHELL)
interact
exit

在终端内运行(xterm可以选择这样做),它会记录内部发生的所有。它已记录到临时文件/tmp/somefile.log,但您可以根据需要更改要使用的名称。通过参数传递日志文件可能是个好主意:

package require Expect

if {$argc < 1} {
    error "not enough arguments"
}
# Unlike C, Tcl doesn't include interpreter name or script name in argv
log_file [lindex $argv 0]
spawn $env(SHELL)
interact
exit