15

Я только что перешел на 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

Bash:

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

real        0.0
user        0.0
sys         0.0

Спасибо,

/YGA

3 ответа3

23

Это довольно близко:

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

$ time sleep 1

real    1.01s
user    0.00s
sys     0.00s
7

Другой вариант - отключить встроенную команду и использовать двоичный файл времени, предоставляемый вашей операционной системой. В моем .zshrc есть следующее:

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

Таким образом, время выводится в STDERR.

3

Просто небольшая точность относительно очень полезного ответа Денниса Уильямсона ("довольно близкая" часть): встроенное time bash выводит в 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .