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
(看起来我使用的是echo
的GNU版本,而不是Mac OS X附带的推荐的BSD版本/bin/echo
。“
zsh
提供了一些非常特别的东西:
➜ ~ which echo
echo: shell built-in command
➜ ~ which time
time: shell reserved word
这些都不是正常的可执行文件。非常有趣!
答案 0 :(得分:3)
当您使用内置time
(测量完整管道)与另一个内置命令(如echo
,true
)时,似乎会发生这种情况。
奇怪的是,我在zshall
手册页中找不到任何提及。
要解决此问题,请运行:
time command echo
command
预命令修饰符调用外部回声而不是内置回声。