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附带的BSD版本/bin/echo
)。
然而,zsh
提供了一些更特殊的东西:
➜ ~ which echo
echo: shell built-in command
➜ ~ which time
time: shell reserved word
这两项都不是正常的可执行文件。非常有趣!
发布于 2016-11-09 14:55:43
当您使用内置time
(它测量一个完整的管道)与另一个内置命令(如echo
、true
)相结合时,似乎就会发生这种情况。
奇怪的是,我在zshall
手册页面中找不到这方面的任何提及。
要解决这个问题,请运行以下命令:
time command echo
command
预命令修饰符调用外部回波,而不是内置回波。
https://stackoverflow.com/questions/40517220
复制相似问题