![如何将控制台重定向/保存到文件并使其在屏幕上可见?](https://linux22.com/image/512931/%E5%A6%82%E4%BD%95%E5%B0%86%E6%8E%A7%E5%88%B6%E5%8F%B0%E9%87%8D%E5%AE%9A%E5%90%91%2F%E4%BF%9D%E5%AD%98%E5%88%B0%E6%96%87%E4%BB%B6%E5%B9%B6%E4%BD%BF%E5%85%B6%E5%9C%A8%E5%B1%8F%E5%B9%95%E4%B8%8A%E5%8F%AF%E8%A7%81%EF%BC%9F.png)
我想将程序的输出(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,否则还是有办法的)。