这有效:
time ls -l
Run Code Online (Sandbox Code Playgroud)
这不起作用
f() { ls -l }
time f
Run Code Online (Sandbox Code Playgroud)
在第二种情况下不打印时间输出。为什么?
@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
Run Code Online (Sandbox Code Playgroud)
这增加了一点开销,但正如您从这个(非伪造的;))示例中看到的,它可能微不足道。
您已经用bash和标记了它zsh。此答案适用于bash.
这是一个错误bash:
f() { ls -l }
Run Code Online (Sandbox Code Playgroud)
相反有效的是:
f() { ls -l ; }
Run Code Online (Sandbox Code Playgroud)
有了 的新定义f,该time命令就可以工作了。
在 下bash,当将命令分组在大括号中时,最后一个命令后面必须跟有分号或换行符。这记录在man bash.
(我会在下面测试这个解决方案zsh,但我目前没有安装它。但是,根据这篇SO帖子,下面的解决方案可能是在子shell中zsh运行。更新:请参阅@mpy的答案。)fzsh
| 归档时间: |
|
| 查看次数: |
1487 次 |
| 最近记录: |