Принимает ли команда времени ZSH какие-либо аргументы, такие как -p? - PullRequest
0 голосов
/ 14 июня 2019

Я недавно установил бета-версию разработчика macOS 10.15 Catalina, которая по умолчанию ZSH вместо BASH.

У меня time установлен как двоичный файл в /usr/bin/time, и я использую это для определения времени некоторых моих сценариев. ZSH, однако, имеет это как встроенную команду. Моя проблема в том, что я обычно использую time -p для форматирования выходных данных так, как я предпочитаю, но это не представляется возможным в ZSH.

Согласно man time:

     -p      The output is formatted as specified by IEEE Std 1003.2-1992 (``POSIX.2'').

Это не относится к встроенному ZSH, и ZSH, похоже, не использует мой установленный time бинарный файл:

BASH

bash-5.0$ which time
/usr/bin/time
bash-5.0$ time echo hello; echo $?
hello

real    0m0.000s
user    0m0.000s
sys 0m0.000s
0
bash-5.0$ time -p echo hello; echo $?
hello
real 0.00
user 0.00
sys 0.00
0

ЗШ

is-mbp-bleggiero% which time
time: shell reserved word
is-mbp-bleggiero% time echo hello; echo $?
hello
0
is-mbp-bleggiero% time -p echo hello; echo $?
zsh: command not found: -p
-p echo hello  0.00s user 0.00s system 74% cpu 0.001 total
127

И это выглядит странно для меня; кажется, что он включает в себя информацию, которую я хочу (пользователь против системы и итого, отформатирован в секундах), но он также не запускает команду, вместо этого жалуется, что ее не существует.

1 Ответ

1 голос
/ 14 июня 2019

Вы можете позвонить /usr/bin/time -p, если хотите использовать эту опцию, или =time -p

Время встроенной zsh не имеет никакой опции (man zshmisc).

Но вы можете export TIMEFMT с нужным форматом, включая переводы строки с \n.

echo $TIMEFMT чтобы увидеть, что сейчас

...