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 여기참조하십시오 .
Sparhawk

8

또 다른 옵션은 내장 명령을 비활성화하고 운영 체제에서 제공 한 타임 바이너리를 사용하는 것입니다. 내 안에 다음이 있습니다 .zshrc.

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

이렇게하면 시간이 STDERR로 출력됩니다.


4

Dennis Williamson의 매우 유용한 답변 ( "정말 가까운"부분)에 관한 작은 정밀도 : bash의 내장 time출력은로 stderr, zsh의 출력은로 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.