【问题标题】:time option doesn't work时间选项不起作用
【发布时间】:2015-04-25 05:37:01
【问题描述】:

我尝试测量执行时间并使用以下命令对其进行格式化:

time -f "%e" ./1 1000 1
-f: command not found

real    0m0.066s
user    0m0.044s
sys 0m0.023s

但是这样的命令有效:

/usr/bin/time -f "%e" ./1 1000 1
31245 212 443
0.00

我试图确定另一个时间的位置,但所有显示到 /usr/bin/time

which time
/usr/bin/time

whereis time
time: /usr/bin/time /usr/bin/X11/time /usr/include/time.h /usr/share/man/man7/time.7.gz /usr/share/man/man2/time.2.gz /usr/share/man/man1/time.1.gz

type -a time
time is a shell keyword
time is /usr/bin/time

如何定义另一个时间的位置?

【问题讨论】:

  • time is a shell keyword 是这里的关键。它是一个内置的shell。
  • @EtanReisner time 是关键字,而不是内置关键字!
  • @gniourf_gniourf 确实如此。尽管我可能应该注意这种区别,但我并不过分注意。
  • 你在 Bash 中有一个很棒的 time 关键字,它允许在复杂的管道上进行计时,这是外部 time 甚至无法接近的。你为什么不想使用它?是因为你不喜欢它的输出格式吗?你可以随意改变它。模仿你的例子:TIMEFORMAT=%2R; time ./1 1000 1.

标签: linux bash time


【解决方案1】:

bash shell 的用户需要使用显式路径才能运行 外部时间命令而不是 shell 内置变体。在系统上 在 /usr/bin 中安装时间的地方,第一个示例将变为

   /usr/bin/time wc /etc/hosts

注意:一些 shell(例如 bash(1))有一个内置的时间命令 提供的功能少于此处描述的命令。到 访问真正的命令,你可能需要指定它的路径名 (类似于 /usr/bin/time)。

http://man7.org/linux/man-pages/man1/time.1.html

【讨论】:

  • \timecommand time 也将避免使用内置命令而支持外部命令。
  • 'time'(带引号)或command time。顺便说一句,time 不是内置的;我的意思是它不被视为命令。这是一个关键字。区别很微妙 :D 这就是为什么像 \time'time'command time 这样的技巧起作用的原因。并且它必须是一个关键字而不是一个内置的,以允许管道和组等的计时。
猜你喜欢
  • 2014-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
相关资源
最近更新 更多