Bash
time <command>
在 zsh 中與在 bash 中不同
time <command>
bash 中的格式:$time ./test.sh real 0m0.000s user 0m0.006s sys 0m0.000s
在 zsh 中:
$time ./test.sh ./test.sh 0.01s user 0.00s system 94% cpu 0.007 total
當我切換到 zsh 時,這一直困擾著我。如何使
time
zsh 的輸出像 bash?
time
關鍵字 in以變數指定的zsh
格式產生輸出TIMEFMT
。該變數的預設值為
%J %U user %S system %P cpu %*E total
您可以像這樣更改它,例如:
TIMEFMT=$'%J\n%U user\n%S system\n%P cpu\n%*E total'
(這實際上只是在預設格式字元串中插入了幾個換行符)
這給出了以下類型的輸出:
$ time sleep 2 sleep 2 0.00s user 0.00s system 0% cpu 2.010 total
或者,更接近於
bash
:$ TIMEFMT=$'real\t%E\nuser\t%U\nsys\t%S' $ time sleep 2 real 2.02s user 0.00s sys 0.01s
TIMEFMT
請參閱手冊中變數的文件zshparam
。在我的系統上(執行 zsh 5.7.1),這顯示
TIMEFMT The format of process time reports with the time keyword. The default is `%J %U user %S system %P cpu %*E total'. Recognizes the following escape sequences, although not all may be available on all systems, and some that are available may not be useful: %% A `%'. %U CPU seconds spent in user mode. %S CPU seconds spent in kernel mode. %E Elapsed time in seconds. %P The CPU percentage, computed as 100*(%U+%S)/%E. %W Number of times the process was swapped. %X The average amount in (shared) text space used in kilobytes. %D The average amount in (unshared) data/stack space used in kilobytes. %K The total space used (%X+%D) in kilobytes. %M The maximum memory the process had in use at any time in kilobytes. %F The number of major page faults (page needed to be brought from disk). %R The number of minor page faults. %I The number of input operations. %O The number of output operations. %r The number of socket messages received. %s The number of socket messages sent. %k The number of signals received. %w Number of voluntary context switches (waits). %c Number of involuntary context switches. %J The name of this job. A star may be inserted between the percent sign and flags printing time (e.g., `%*E'); this causes the time to be printed in `hh:mm:ss.ttt' format (hours and minutes are only printed if they are not zero). Alternatively, `m' or `u' may be used (e.g., `%mE') to produce time output in milliseconds or microseconds, respectively.