Bash 将交互式命令的输出重定向到文件和终端
我有一个需要用户输入的程序,我使用Bash 将交互式命令的输出重定向到文件和终端,bash,redirect,stdin,Bash,Redirect,Stdin,我有一个需要用户输入的程序,我使用tee将其保存到文件中: tee program.in | program 我还必须在另一个文件中捕获stdout和stderr。这就是诀窍 tee program.in | program > program.out 2>&1 问题是,用户输入将基于之前输出的程序,因此用户必须在终端中看到程序输出 关于如何做到这一点,你有什么想法吗?另一个更惯用的tee:-?,即 tee program.in | program 2>&1
tee
将其保存到文件中:
tee program.in | program
我还必须在另一个文件中捕获stdout和stderr。这就是诀窍
tee program.in | program > program.out 2>&1
问题是,用户输入将基于之前输出的程序,因此用户必须在终端中看到程序输出
关于如何做到这一点,你有什么想法吗?另一个更惯用的
tee
:-?,即
tee program.in | program 2>&1 | tee program.out
我希望这有帮助
注意:由于您似乎是新用户,如果您得到的答案有助于您,请记住将其标记为已接受,并/或将其作为有用的答案给予+(或-)。不幸的是,它不起作用。当输出写入文件时,它不会在终端中打印。我可以打开终端并执行
tail-f程序.out
,但输出是缓冲的,不会立即显示。如果输出是缓冲的,则tee
也会延迟显示。尝试使用unbuffer
包装程序
(如果系统上有)。祝你好运。另一个解决方案(我在查看堆栈溢出档案时发现的)是用脚本
包装所有内容。类似这样的script-c“tee grid09.in | grid09”-f grid09.out
可以完成任务。ohhh。你就是这么做的。好的,对于将来的问题,您的用例的快速摘要将有助于获得更快的答案。祝你好运,谢谢你的chk分数。