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分数。