在以下示例中,每个time
是关键字还是/usr/bin/time
?为什么,或者你如何找到它?
关键字可以是命令吗?
或者关键字是否time
适用于空命令?(我可能在帖子或评论中的某个地方问过这个问题,但我找不到)
谢谢。
$ time time
real 0m0.000s
user 0m0.000s
sys 0m0.000s
$ time
real 0m0.000s
user 0m0.000s
sys 0m0.000s
在以下示例中,每个time
是关键字还是/usr/bin/time
?为什么,或者你如何找到它?
关键字可以是命令吗?
或者关键字是否time
适用于空命令?(我可能在帖子或评论中的某个地方问过这个问题,但我找不到)
谢谢。
$ time time
real 0m0.000s
user 0m0.000s
sys 0m0.000s
$ time
real 0m0.000s
user 0m0.000s
sys 0m0.000s
在
time time
中,两者都是 bash 的内置命令,没有一个是外部/usr/bin/time
命令。这是可能的,因为
time
内置将管道作为其参数,但time
它本身是管道,因此可以进行多次调用。如果您查看 bash 源代码,您甚至会发现引用这种特殊情况的注释,寻找
time
关注另一个time
或time -p
.您只能看到一次输出,因为
time
是通过设置位标志来实现的,因此多次调用它没有任何效果,因为它只是在该管道上设置了相同的位......但是,这会在两个单独的管道中调用它,因此您会看到两次输出:
您可以通过使用路径显式调用外部来查看结果
/usr/bin/time
...或使用\time
(前导\
阻止外壳使用内置)或使用command
内置(如中time command time
),例如:如您所见,外部
/usr/bin/time
在没有参数的情况下调用它时会抱怨......所以这就是您在那里看到的。(此外,如果您在实际命令中使用它,您会注意到输出格式与内置 bash 的不同。)如果您在第一个示例中只看到一个输出,则这是一个 shell 错误。
在重新实现
ksh
wheretime
is a概念的 shell 中keyword
,time
不带参数打印整个管道的时间,在这种特殊情况下,它只是单个time
关键字。如果你调用
time time
,第一次打印整个管道的时间,第二次time
只打印自己的时间。所以
time
单独的关键字确实是空命令之前的关键字。可能两者都取决于您的设置。
您可以使用以下命令查看系统上的内容:
在您的示例中,两个时间都
time time
将指向相同的命令。