我刚刚发现,以下内容在我的 Ubuntu 16.04 上无法正常工作:
$ 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
的内置关键字,其功能类似。
您可以像/usr/bin/time -p [command] >file 2>&1
一样访问已安装的二进制文件(如果有(,而不是使用内置的time
(bash( 命令。这将完全符合您的期望。 请注意-p
选项,这是您在上面看到的"便携式输出格式"所必需的。
另外请看一下手册页:man time
。