更改zsh的时间输出格式

更改zsh的时间输出格式

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

相关内容