使用格式选项调用“time”

使用格式选项调用“time”

我想测量命令的执行时间并获取(对我来说)time命令的奇怪行为。

time像手册页示例中提到的那样使用-for--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

相关内容