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
这些都不是普通的可执行文件。非常有趣!
最佳答案
当您使用内置的time
(测量完整的管道)和另一个内置命令(如echo
、)时,这似乎会发生是的
。
奇怪的是,我在 zshall
手册页中找不到任何相关内容。
要解决这个问题,运行这个:
time command echo 🍔
command
precommand modifier 调用外部 echo 而不是内置 echo。
关于time - 为什么 `time` 在 `echo` 上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40517220/