如何在文件中获取时间命令的输出?

如何在文件中获取时间命令的输出?

我运行该命令time echo "Hello world" | tee output.txt,希望将完整输出到终端stdoutoutput.txt文件。但是,文件内容不是我期望的:

预期文件内容:

你好世界

实际 0m0.000s
用户 0m0.000s
系统 0m0.000s

实际内容:

你好世界”

有人可以帮忙吗?

答案1

在 Bash 中,time是一个关键字这适用于整个管道。因此,time echo "Hello world" | tee output.txt计时的是整个过程echo "Hello world" | tee output.txt,而不仅仅是命令echo。此外,它将时间统计信息写入 stderr。因此我们需要:

  1. 对命令进行分组,以便time适用于我们所关注的命令或管道部分。
  2. 将该组的 stderr 流重定向到 stdout。
  3. 然后将输出通过管道传输到 tee。

因此,以下之一:

(time echo "Hello world") 2>&1 | tee output.txt
{ time echo "Hello world"; } 2>&1 | tee output.txt

这里:

  • 我们需要将(时间回显)作为单个命令,因此使用括号或大括号,
  • 将 stderr 重定向到 stdout,
  • 通过管道将标准输出传输到tee

我们还可以使用|&以下快捷方式2>&1 |

(time echo "Hello world") |& tee output.txt

相关内容