Thay đổi định dạng đầu ra của thời gian zsh


19

Tôi mới chuyển sang zsh. Tuy nhiên, tôi thực sự không thích cách timelệnh dựng sẵn cũng xuất ra lệnh đó là thời gian. Tôi rất thích bashđầu ra phong cách. Bất cứ ai biết làm thế nào để chuyển nó qua?

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

Cảm ơn,

/ YGA

Câu trả lời:


29

Điều này khá gần:

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

$ time sleep 1

real    1.01s
user    0.00s
sys     0.00s

5
Chỉnh sửa đề xuất của tôi đã bị từ chối 2-1. Lý tưởng nhất là định dạng TIMEFMT=$'\nreal\t%*E\nuser\t%*U\nsys\t%*S'. Các *s trong các cờ định dạng chúng là giờ / phút theo bash, thay vì chỉ vài giây. Thêm thông tin TIMEFMT ở đây .
Sparhawk

8

Một tùy chọn khác là vô hiệu hóa lệnh dựng sẵn và sử dụng nhị phân thời gian do hệ điều hành của bạn cung cấp. Tôi có những điều sau đây .zshrc:

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

Bằng cách này, thời gian đầu ra cho STDERR.


4

Chỉ cần một độ chính xác nhỏ liên quan đến câu trả lời rất hữu ích của Dennis Williamson (phần "khá gần"): timekết quả đầu ra tích hợp của bash stderr, trong khi đầu ra của zsh stdout.

Lệnh này có thể minh họa sự khác biệt: time (echo abc) 2>/dev/null

Trong bash, nó xuất ra:

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

Trong zsh, với biến TIMEFMT được đề xuất:

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

    real    0.00s
    user    0.00s
    sys     0.00s
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.