我正在通过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
答案 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