更改zsh时间的输出格式


19

我刚切换到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

Answers:


29

这非常接近:

$ TIMEFMT=$'\nreal\t%E\nuser\t%U\nsys\t%S'

$ time sleep 1

real    1.01s
user    0.00s
sys     0.00s

5
我的拟议编辑被2-1拒绝。理想情况下,格式应为TIMEFMT=$'\nreal\t%*E\nuser\t%*U\nsys\t%*S'*标志中的s按照bash将其格式化为小时/分钟,而不仅仅是几秒钟。有关更多信息,请TIMEFMT 参见此处
Sparhawk

8

另一个选择是禁用内置命令,并使用操作系统提供的时间二进制文件。我的内容如下.zshrc

disable -r time       # disable shell reserved word
alias time='time -p ' # -p for POSIX output

这样,时间输出到STDERR。


4

关于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
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.