time - 为什么 `time` 在 `echo` 上不起作用?

标签 time echo zsh

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 使用普通的可执行文件来执行 timeecho

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/

相关文章:

java - Handler.postDelayed 函数不会造成时间延迟? - 安卓

php 12小时格式到24小时格式时间转换

linux - 如何从Linux系统中删除echo命令?

zsh 自动完成类似 sudo 的命令

android - PubNub 中的聊天消息排序策略

flutter - 如何在Dart语言中进行日期和时间格式的逻辑表达?

php - 为回显字符串提供 CSS 类

linux - 使用 echo 和 cat 进行不需要的换行

css - 如何将 `diff`文件创建一个 "common"文件?

zsh - NixOS 之外的 Nix 配置