返回

如何在 Linux 中将 Time 命令输出重定向到文件?

Linux

将 Time 命令输出重定向到 Linux 文件:终极指南

引言

time 命令在 Linux 中必不可少,它允许您测量程序的执行时间。但是,当您需要将输出重定向到文件时,可能会遇到一些困难。本文将提供多种方法,帮助您解决此问题,并详细介绍每种方法的优点和缺点。

方法一:Tee 命令

Tee 命令可同时将输出写入文件和标准输出,使其成为重定向 time 命令输出的便捷选择。

time sleep 1 | tee time.txt

此命令将 time 命令的输出写入文件 time.txt 并同时在终端上显示。

方法二:Tr 命令

Tr 命令可将换行符转换为其他字符,这对于重定向 time 命令输出很有用,因为输出通常包含换行符。

time sleep 1 | tr '\n' '\r' > time.txt

此命令将 time 命令输出中的换行符转换为回车符,从而可以正确写入文件。

方法三:Sed 命令

Sed 命令是一种强大的文本编辑工具,可用于删除换行符,以便将其写入文件。

time sleep 1 | sed 's/\n//g' > time.txt

此命令使用 sed 命令删除输出中的所有换行符,从而可以写入文件。

方法四:Expect 脚本

Expect 脚本是一种自动化工具,可控制交互式程序。它可用于捕获 time 命令的输出并将其写入文件。

#!/usr/bin/expect -f
spawn time sleep 1
expect "real"
expect eof

此脚本使用 expect 启动 time 命令并等待其输出 "real"。然后它期望输入结束 (eof),表示命令已完成。输出存储在 expect 缓冲区中,可以重定向到文件:

expect -f time.exp | tee time.txt

最佳实践

  • 考虑使用具有 -o 选项的 time 命令实现,因为它专门用于将输出重定向到文件。
  • 如果必须使用没有 -o 选项的 time 命令,请选择最适合您需求的解决方案。

常见问题解答

1. 如何避免意外行为?

不要将 tee、tr、sed 或 expect 命令作为 time 命令的子命令使用,因为这会导致意想不到的行为。

2. 如何检查输出是否正确?

始终检查文件 time.txt 以验证输出是否正确。

3. 为什么使用换行符替换?

换行符替换用于将多行输出写入单个文件中。

4. Expect 脚本中 expect "real" 的目的是什么?

"real" 是 time 命令输出中的,表示命令已完成。

5. expect 脚本中的 spawn time sleep 1 命令有什么作用?

它启动 time sleep 1 命令并将其输出发送到 expect 缓冲区。

结论

将 time 命令输出重定向到 Linux 文件对于各种场景非常有用。本文中提供的方法允许您根据自己的需要选择最佳解决方案。通过遵循最佳实践和常见问题解答,您可以确保成功地将 time 命令输出重定向到文件。