Change the output format of zsh's time

I've just switched to zsh. However, I really don't like how the time builtin command also outputs the command that it's timing. I much prefer the bash style output. Anyone know how to switch it over?

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

Bash:

[casqa1:~/temp]$ bash
casqa1.nyc:~/temp> time grep foo /dev/null
real 0.0
user 0.0
sys 0.0

Thanks,

/YGA

3 Answers

This is fairly close:

$ TIMEFMT=$'\nreal\t%E\nuser\t%U\nsys\t%S'
$ time sleep 1
real 1.01s
user 0.00s
sys 0.00s
2

Another option is to disable the builtin command and use the time binary provided by your operating system. I have the following in my .zshrc:

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

This way time outputs to STDERR.

Just a small precision regarding Dennis Williamson's very useful answer (the "fairly close" part): bash's built-in time outputs to stderr, while zsh's outputs to stdout.

This command can illustrate the difference: time (echo abc) 2>/dev/null

In bash, it outputs:

 $ time (echo abc) 2>/dev/null abc

In zsh, with the suggested TIMEFMT variable:

 $ time (echo abc) 2>/dev/null abc real 0.00s user 0.00s sys 0.00s

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like