我想测量命令的执行时间并获取(对我来说)time
命令的奇怪行为。
我time
像手册页示例中提到的那样使用-f
or--format
选项进行调用,并收到command not found
错误。看起来它认为-f
是测量执行时间的命令......
user@laptop:~$ time -f '%e' sleep 1
-f: Befehl nicht gefunden.
然后我再次调用同一行,只是指定了time
.结果发生变化,按预期工作(wtf?):
user@laptop:~$ /usr/bin/time -f '%e' sleep 1
1.00
现在我很困惑......甚至which
无法帮助我:
user@pc:~$ which time
/usr/bin/time
而且...如果我不使用选项,即使没有完整路径,它也可以正常工作:
user@laptop:~$ time sleep 1
real 0m1.003s
user 0m0.001s
sys 0m0.002s
如果我想指定选项,如何正确使用该命令?使用完整路径似乎可行,但看起来更像是有问题的东西(或我不明白的东西)的不可靠副作用?
编辑:我正在使用 Ubuntu 14.04 LTS(值得信赖)
答案1
Bash
有一个名为 的内置命令time
。因此,如果您只是键入,time
它将使用内置的 shell,其中没有-f
.但是man time
(其中谈到-f
)将给出/usr/bin/time
程序的联机帮助页。因此,如果您想使用联机帮助页中描述的选项,您应该确保调用该程序,而不是内置的 shell。实现此目的的一种方法是使用完整路径。
(恕我直言,这在 bash 中真的很难看)
有关更多信息,请参阅问题下方的链接。
答案2
只是想我会添加一种方法来显示鲍里斯答案的信息。
正如刚才再次对时间感到困惑一样。
在 bash 中type
是你的朋友。我真的应该记得多使用它。旧csh
习难改。
which -a time
/usr/bin/time
type time
time is a shell keyword
type times
times is a shell builtin
type nslookup
nslookup is /usr/bin/nslookup