【发布时间】:2013-10-10 14:30:02
【问题描述】:
我刚刚更新了我的 bash,现在我无法使用更新前运行良好的 time time 命令。
time time cmd的思路是:第一个time是bash内置函数,第二个time是/usr/bin/time程序。 cmd是要定时的程序。
time time 的使用简短易记,可以查看精美打印的用户/系统/实时和页面错误统计信息:
$ time time false
Command exited with non-zero status 1
0.00user 0.00system 0:00.01elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1major+163minor)pagefaults 0swaps
real 0m0.035s
user 0m0.000s
sys 0m0.002s
第一行是 cmd 的退出状态(如果非零),第二行是来自 /usr/bin/time 的紧凑时间统计信息,第三行是来自 /usr/bin/time 的带有页面错误统计信息的附加信息。然后是 bash 的 time 中的三行,其中包含更详细的时间信息(点后 3 位数字)。
问题是:为什么较新的 bash 将第二个 time 忽略为 /usr/bin/time?发生了什么变化,为什么?
如何修补 bash 以返回旧样式的解析时间?
我认为 bash 的 parse.y 发生了变化,这是野牛文件。这里的差异http://code.metager.de/source/diff/gnu/bash/parse.y?r2=%2Fgnu%2Fbash%2Fparse.y%40509a4430ae72aec10896713435e84f5b27675763&r1=%2Fgnu%2Fbash%2Fparse.y%4089a92869e56aba4e4cab2d639c00a86f0545c862
【问题讨论】:
-
如果使用它的完整路径呢?
-
没关系 (
/usr/bin/time),但我想使用time time。我认为,bash 4.2 中的 parse.y 中存在错误 ...:code.metager.de/source/diff/gnu/bash/… 可能在 TIMEOPT/TIMEIGN 附近 -
做个别名怎么样?
alias time='time /usr/bin/time'-- 然后你只需要写一次。 -
您为什么不直接为
/usr/bin/time创建一个格式,它会以您想要的格式准确生成您想要的信息,然后将t之类的别名作为调用的别名?我没有看到内置时间给你的/usr/bin/time格式字符串不会。 -
您从哪些版本的
bash升级到了哪些版本? (虽然我倾向于同意 rici:只需设置TIME环境变量以包含您想要的信息,您可以使用\time cmd快速访问被bash关键字@ 遮蔽的外部time程序987654347@).