关于linux:将time命令的输出重定向到文件

Redirecting the output of time command to a file

本问题已经有最佳答案,请猛点这里访问。

我刚刚发现,以下内容对我的Ubuntu 16.04不起作用:

1
2
3
4
5
6
7
$ time >file 2>&1

real    0m0.000s
user    0m0.000s
sys     0m0.000s
$ cat file
$

输出转到终端,文件为空,但是2>& 1(描述符2重定向到描述符1的地址)STDERR应该去STDOUT去的地方。 我一直在寻找关于这个主题的现有主题,并且在描述一个更复杂的问题时,通常会提到这样一个简单的问题,它表现得很好。 为什么会这样行为不端?

UPD:得到答案,时间是BASH的内置命令。 也许有人在完全相同的事情上谜题(可能是那些用Kernighan和Pike旧书学习Unix的人)。


您正在使用bash,它确实有一个名为time的内置关键字,它以类似的方式运行。

您可以访问已安装的二进制文件(如果有),而不是使用内置的time(bash)命令,如/usr/bin/time -p [command] >file 2>&1。 这将完全符合您的期望。
请注意-p选项,这是您在上面看到的"便携式输出格式"所需的选项。

另请参阅联机帮助页:man time