zshの時間の出力形式を変更する


19

に切り替えました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

バッシュ:

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

real        0.0
user        0.0
sys         0.0

おかげで、

/ YGA

回答:


29

これはかなり近いです:

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

$ time sleep 1

real    1.01s
user    0.00s
sys     0.00s

5
私の提案した編集は2-1で拒否されました。理想的には、形式はである必要がありますTIMEFMT=$'\nreal\t%*E\nuser\t%*U\nsys\t%*S'*フラグのsは、秒単位ではなく、bashごとに時間/分としてフォーマットします。詳細はTIMEFMT こちら
スパラフーク

8

別のオプションは、組み込みコマンドを無効にし、オペレーティングシステムが提供する時間バイナリを使用することです。私は次のものを持っています.zshrc

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

これにより、時間はSTDERRに出力されます。


4

デニス・ウィリアムソンの非常に有用な答え(「かなり近い」部分)に関するわずかな精度:bashの組み込みtime出力to stderr、zshの出力to 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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.