将输出回显到文件,同时在控制台中看到它

将输出回显到文件,同时在控制台中看到它

因此我通过以下方式回显在终端中运行的程序的输出: command 2>&1 >> /path/toFile.txt

它带来了一些我想克服的限制:

  1. 它“冻结”并且没有在终端中输出 - 查看实际输出的唯一方法是打开输出文件
  2. 打开输出文件不会提供实时结果。它提供打开该文件时的结果

如何将输出回显到文件并能够:

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

相关内容