我想将程序的输出(stdout)保存到文件中,但仍然能够实时在屏幕上看到输出。
我需要适用于 Linux 和 Windows 的解决方案。
答案1
答案2
在 Linux 和类似系统上:
program | tee filename
该tee
程序将进入其标准输入的任何内容发送到其标准输出(如cat
),并将其写入指定文件。
达到相同效果的另一种方法是
program >filename 2>/dev/null &
tail -f filename
这将在后台运行程序,将其标准输出重定向到文件,然后tail -f
让您实时跟踪写入文件的数据(或几乎如此,可能只有几分之一秒的延迟)。 使2>/dev/null
标准错误流消失,这样它就不会干扰 的输出tail -f
。
答案3
Linux:command | tee logfile
Windows:安装 cygwin,然后运行:command | tee logfile
答案4
在 Windows 中,您可以tee
使用操作系统版本。它与 Linux 应用程序相同,来自coreutils 包。
不过需要注意的是:tee
它有自己的返回代码,因此你无法注意到传输到它的进程的错误(除非你使用的是 Linux,否则还是有办法的)。