因此我通过以下方式回显在终端中运行的程序的输出:
command 2>&1 >> /path/toFile.txt
它带来了一些我想克服的限制:
- 它“冻结”并且没有在终端中输出 - 查看实际输出的唯一方法是打开输出文件
- 打开输出文件不会提供实时结果。它提供打开该文件时的结果
如何将输出回显到文件并能够:
a)查看该文件中的实时更改(我认为需要单独的程序)
或者
b)输出到文件并同时在终端中查看输出
答案1
对于 a) 有一个名为“tail”的实用程序,它可以显示文件的最后几行,并可以选择监视文件末尾添加的新行:
$ tail -f /path/toFile.txt
less 分页器还具有跟踪变化的能力,按下 shift-F 会使其进入与 tail -f 非常相似的模式,其优点是只需按 ctrl-c 即可返回正常文件查看模式,这样您就可以向后滚动文件或搜索文件而无需关闭它。
对于 b)有一个名为 tee 的标准实用程序专门用于此目的(http://www.gnu.org/software/coreutils/manual/coreutils.html#tee-invocation)
你可能会想要如下内容:
command 2>&1 | tee -a /path/toFile.txt | less
最后的| less
显然是可选的,但请注意,如果包含它,关闭 less 可能也会关闭您正在运行的命令。
顺便说一句,如果这是一个长期运行的过程,强烈考虑在 nohup 下运行它或在屏幕内运行它,以便它在注销后仍然存在。
答案2
这听起来像是 tee 的工作。输出将同时写入终端和文件。
command 2>&1 | tee -a /path/toFile.txt