time
在我的系统上似乎总体运行良好:
➜ ~ time touch tmp.txt
touch tmp.txt 0.00s user 0.00s system 54% cpu 0.007 total
然而,当我尝试使用time echo
时,它的输出似乎被抑制了。
➜ ~ time echo
而且,为了使情节更加扑朔迷离:它似乎可以恢复测量echo
的能力,只要我把那个echo
扔进管道中:
➜ ~ time echo | xxd
00000000: f09f 8d94 0a .....
echo 0.00s user 0.00s system 38% cpu 0.002 total
xxd 0.00s user 0.00s system 88% cpu 0.003 total
发生了什么事?
echo
是否输出到time
的最喜欢的流中,替换了其报告?如果有某种方法(例如流重定向),可以让
time echo
输出通常的报告吗?编辑:一些评论者指出我正在使用
zsh
。我当时没有注意到,但这解释了很多问题。
bash
使用普通可执行文件来执行time
和echo
。bash-3.2$ which echo
/usr/local/opt/coreutils/libexec/gnubin/echo
bash-3.2$ which time
/usr/bin/time
看起来我正在使用GNU版本的echo
,而不是预装在Mac OS X上的假定的BSD版本/bin/echo
。
而zsh
提供了更加特殊的功能:
➜ ~ which echo
echo: shell built-in command
➜ ~ which time
time: shell reserved word
这两个都不是普通的可执行文件。非常有趣!
zsh
,而不是bash
。 - webbzsh
,请使用外部的/usr/bin/time
命令。 - alvitszsh
提供了一个与通常的/usr/bin/time
可执行文件质上不同的内置功能。 - Birchlabs