我知道您可以用来tee
记录终端中命令的输出,例如:
df -h | tee ~/log.txt
但是,我如何使用像这样的更复杂的命令来做到这一点:
xterm -hold -e program arg1 arg2 arg3
我尝试了这个但没有成功:
xterm -hold -e matlab -noxterm -nojvm -r "solver('/path/to/a/folder',1)" | tee ~/log.txt
我的目标是记录xterm
和的所有输出不是原来的终端。这
答案1
您可以打开 xterm 日志记录并将所有 xterm 输出发送到文件:
xterm -l -lf logfile.txt -e program
答案2
重定向输出可以更改在终端中运行的程序的行为。如果你想捕捉全部程序的输出使用不干扰程序的内容,例如script
:
xterm -hold -e script -c "program arguments" output.log
(Linux)或
xterm -hold -e script output.log program arguments
(OSX、其他 BSD)
或者,您可以设置xterm
将其屏幕写入“打印机”,例如,使用资源printerCommand
或使用菜单项立即打印全部。
进一步阅读:
- 脚本(1)Linux
- 脚本(1)操作系统等
- xterm - X 的终端模拟器
答案3
如果您想要告诉 xterm 运行的程序的输出, xterm -hold -e " program arg1 arg2 arg3 | tee ~/log.txt"
例如,在我的 Ubuntu 中我会运行gnome-terminal
类似的东西xterm -hold -e " firefox | tee ~/log.txt"
还有一个选项可以记录错误
xterm -hold -e program 2> errors.txt
它将通常进入控制台的任何错误重定向到文件
但我认为这有点多余。从一个终端运行程序到另一个终端。