Isso é bastante próximo:
$ TIMEFMT=$'\nreal\t%E\nuser\t%U\nsys\t%S'
$ time sleep 1
real 1.01s
user 0.00s
sys 0.00s
Acabei de mudar para zsh
. No entanto, eu realmente não gosto de como o comando time
builtin também gera o comando que é o tempo. Eu prefiro muito mais a saída do estilo bash
. Alguém sabe como mudar isso?
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
Obrigado,
/ YGA
Outra opção é desabilitar o comando interno e usar o binário de tempo fornecido pelo seu sistema operacional.
Eu tenho o seguinte no meu .zshrc
:
disable -r time # disable shell reserved word
alias time='time -p ' # -p for POSIX output
Desta forma, o tempo é enviado para STDERR.
Apenas uma pequena precisão em relação à resposta muito útil de Dennis Williamson (a parte "razoavelmente próxima"): o time
de bash produz saída para stderr
, enquanto o zsh produz para stdout
.
Este comando pode ilustrar a diferença: time (echo abc) 2>/dev/null
No bash, ele gera:
$ time (echo abc) 2>/dev/null
abc
Em zsh, com a variável TIMEFMT sugerida:
$ time (echo abc) 2>/dev/null
abc
real 0.00s
user 0.00s
sys 0.00s