如何在zsh中实现tcsh set time自动输出命令执行时间统计的功能
zsh 自动打印命令执行耗时统计方案
结论
zsh 没有和 tcsh 命名完全一致的time特殊变量,但有功能完全对等的原生内置参数,无需复杂自定义配置即可实现相同效果。
配置方法
直接在你的~/.zshrc文件中添加如下两行配置即可:
# 含义同tcsh的set time:所有命令执行完成后都自动打印耗时统计,设置为正整数则仅打印耗时超过对应秒数的命令 REPORTTIME=0 # 可选:自定义输出格式,和tcsh默认的time输出格式1:1对齐 TIMEFMT="%Uu %Ss %E %P %X+%Dk %I+%Oio %Fpf+%Ww"
添加完成后执行source ~/.zshrc立即生效。
效果验证
生效后执行命令的输出效果和tcsh完全一致:
% sleep 1 0.000u 0.015s 0:01.01 0.9% 0+0k 0+0io 2241pf+0w % sleep 1 && sleep 0.1 0.000u 0.000s 0:01.01 0.0% 0+0k 0+0io 2241pf+0w 0.000u 0.015s 0:00.11 9.0% 0+0k 0+0io 2243pf+0w
补充说明
- 该功能对应的
REPORTTIME内置参数说明不在zshoptions(1)手册中,而是在zshparam(1)手册的Shell Variables章节,所以之前查阅选项文档会找不到相关内容。 - 管道、多命令拼接(&&、||、;)等场景下,会对每个独立执行的命令分别统计并打印耗时,和tcsh的行为完全一致。
- 如果你不需要和tcsh输出格式对齐,可以自定义
TIMEFMT变量的格式,只保留你需要的统计字段即可。
内容的提问来源于stack exchange,提问作者cnst
相关产品推荐
相关产品推荐

