Alterar o formato de saída da hora do zsh

19

Acabei de mudar para zsh. No entanto, eu realmente não gosto de como o timecomando embutido também gera o comando que está no momento. Eu prefiro muito a bashsaída de estilo. 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

Bater:

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

real        0.0
user        0.0
sys         0.0

Obrigado,

/ YGA

YGA
fonte

Respostas:

29

Isso é bem próximo:

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

$ time sleep 1

real    1.01s
user    0.00s
sys     0.00s
Pausado até novo aviso.
fonte
5
Minha edição proposta foi rejeitada por 2-1. Idealmente, o formato deve ser TIMEFMT=$'\nreal\t%*E\nuser\t%*U\nsys\t%*S'. O *s nos sinalizadores os formata como horas / minutos conforme o bash, em vez de apenas segundos. Mais informações TIMEFMT aqui .
Sparhawk 16/05
8

Outra opção é desativar o comando interno e usar o tempo binário 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

Dessa forma, o tempo é enviado para STDERR.

exic
fonte
4

Apenas uma pequena precisão quanto resposta muito útil de Dennis Williamson (o "bastante perto" parte): a festança da built-in timesaídas para stderr, enquanto as saídas de zsh 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

No zsh, com a variável TIMEFMT sugerida:

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

    real    0.00s
    user    0.00s
    sys     0.00s
anol
fonte