我想问命令执行的时间统计输出属于什么(哪个文件描述),因为它既不是 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
因此,它可以按照不同的规则进行游戏。