我刚刚切换到zsh
。但是,我真的不喜欢time
内置命令也输出其计时命令的方式。我更喜欢bash
样式输出。有人知道如何切换吗?
Zsh:
[casqa1:~/temp]$ time grep foo /dev/null
/usr/local/gnu/bin/grep --color -i foo /dev/null 0.00s user 0.00s system 53% cpu 0.004 total
重击:
[casqa1:~/temp]$ bash
casqa1.nyc:~/temp> time grep foo /dev/null
real 0.0
user 0.0
sys 0.0
谢谢,
/YGA
答案1
这相当接近:
$ TIMEFMT=$'\nreal\t%*E\nuser\t%*U\nsys\t%*S'
$ time sleep 1
real 1.01s
user 0.00s
sys 0.00s
答案2
另一个选项是禁用内置命令并使用操作系统提供的时间二进制文件。我的 中有以下内容.zshrc
:
disable -r time # disable shell reserved word
alias time='time -p ' # -p for POSIX output
这样时间就输出到STDERR。
答案3
关于 Dennis Williamson 非常有用的答案(“相当接近”部分),只需稍微精确一点:bash 的内置time
输出为stderr
,而 zsh 的输出为stdout
。
此命令可以说明差异:time (echo abc) 2>/dev/null
在 bash 中,它输出:
$ time (echo abc) 2>/dev/null
abc
在 zsh 中,使用建议的 TIMEFMT 变量:
$ time (echo abc) 2>/dev/null
abc
real 0.00s
user 0.00s
sys 0.00s