命令执行时间统计的输出

命令执行时间统计的输出

我想问命令执行的时间统计输出属于什么(哪个文件描述),因为它既不是 1(stdout) 也不是 2(stderr) !
为什么会这样呢?

#
#
#
# time date 1>/tmp/date_1.out 2>&1

real    0m0.00s
user    0m0.00s
sys     0m0.00s
#
#
#
# cat /tmp/date_1.out
Mon Dec 10 11:20:36 BEIST 2017
#
# 
#

答案1

它既不属于 的 stdout 也不属于 stderr date。它属于 的 stderr time。观察:

$ ( time date 1>/tmp/date_1.out 2>&1 ) 2>time.out
$ cat time.out

real    0m0.002s
user    0m0.000s
sys     0m0.000s

time执行date 1>/tmp/date_1.out 2>&1.的输出time不受应用于 的输出的重定向的影响date。这是可能的,因为time不是一个普通命令:time是一个 shell 关键字:

$ type time
time is a shell keyword

因此,它可以按照不同的规则进行游戏。

相关内容