Zsh zamanının çıktı formatını değiştirme


19

Daha yeni geçtim zsh. Ancak, timeyerleşik komutun zamanlaması olan komutu nasıl çıkardığını gerçekten sevmiyorum . bashStil çıktısını çok tercih ederim . Nasıl değiştirileceğini bilen var mı?

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

Teşekkürler,

/ YGA

Yanıtlar:


29

Bu oldukça yakın:

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

$ time sleep 1

real    1.01s
user    0.00s
sys     0.00s

5
Önerilen düzenlemem 2-1 reddedildi. İdeal olarak, biçim olmalıdır TIMEFMT=$'\nreal\t%*E\nuser\t%*U\nsys\t%*S'. *Bunun yerine sadece saniyelik bash göre saat / dakika olarak bayraklar biçimlerde onları s. TIMEFMT Burada daha fazla bilgi .
Sparhawk

8

Başka bir seçenek de yerleşik komutu devre dışı bırakmak ve işletim sisteminiz tarafından sağlanan zaman ikili kodunu kullanmaktır. Bende aşağıdakiler var .zshrc:

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

Bu şekilde zaman STDERR'a gönderilir.


4

Dennis Williamson'ın çok faydalı cevabı ("oldukça yakın" kısım) ile ilgili küçük bir hassasiyet: bash'ın yerleşik timeçıktıları stderr, zsh'ın çıktıları stdout.

Bu komut farkı gösterebilir: time (echo abc) 2>/dev/null

Bash'da çıktılar:

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

Zsh'de, önerilen TIMEFMT değişkeni ile:

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

    real    0.00s
    user    0.00s
    sys     0.00s
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.