我是使用tee
命令的新手。
我正在尝试运行我的一个程序,该程序需要很长时间才能完成,但它会随着进度打印出信息。我正在使用 'tee' 将输出保存到文件以及在 shell ( bash
) 中查看输出。
但问题是tee
直到我的命令结束才将输出转发到 shell。有什么办法吗?
我正在使用 Debian 和bash
.
这实际上取决于输出量和您正在运行的任何命令的实现。没有程序有义务直接打印东西stdout
或一直stderr
冲洗它。因此,即使大多数 C 运行时实现在使用运行时例程之一写入一定数量的数据后刷新,但printf
根据实现,这可能不是真的。
它tee
不会立即输出它,它可能只在命令运行的最后接收输入。提及它是哪个确切命令可能会有所帮助。
您遇到的问题很可能与缓冲有关。您可以查看 stdbuf 命令,它执行以下操作:
stdbuf - 运行 COMMAND,并为其标准流修改缓冲操作。
如果您要发布您的用法,我可以给出更好的答案,但事实上
(for i in `seq 10`; do echo $i; sleep 1s; done) | tee ./tmp
是正确使用 tee 命令并且似乎有效。用您的命令替换管道之前的部分,您应该一切顺利。