如何在zsh中的函数上运行“time”


4

这有效:

time ls -l

这不起作用

f() { ls -l }
time f

在第二种情况下没有打印时间输出。为什么?

Answers:


3

@ John1024给了你答案bash。我试着回答这个zsh标签......

如果为函数生成子shell,则可以获得时序统计信息:

% zsh
% f() { sleep 1 }
% time f
% time (f)
( f; )  0.00s user 0.05s system 4% cpu 1.061 total
% time sleep 1
sleep 1  0.00s user 0.03s system 2% cpu 1.045 total

这增加了一点开销,但正如你从这个(非伪造的;))例子中看到的那样,它可能是微不足道的。


4

你有两个标记这个bashzsh。这个答案适用于bash

这是一个错误bash

f() { ls -l }

相反的是:

f() { ls -l ; }

使用该新定义f,该time命令有效。

在下bash,当在大括号中将命令组合在一起时,最后一个命令必须后跟分号或换行符。这在“复合命令”中记录man bash

(我会测试这个解决方案,zsh但我目前没有安装它。但是,根据这篇SO帖子,解决方案zsh可能是f在子shell中运行。更新:请参阅@ mpy的答案zsh


即使使用分号,也无法获得时间报告zsh
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.