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'*झंडे उन्हें प्रति बैश के रूप में घंटे / मिनट, बजाय बस कुछ सेकंड के रूप में स्वरूपों में रों। अधिक जानकारी TIMEFMT यहाँ पर ।
स्पार्कहॉक

8

एक अन्य विकल्प बिलिन कमांड को अक्षम करना और आपके ऑपरेटिंग सिस्टम द्वारा प्रदान किए गए समय बाइनरी का उपयोग करना है। मेरे पास निम्नलिखित हैं .zshrc:

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

इस तरह समय एसटीडीआरआर को आउटपुट करता है।


4

डेनिस विलियमसन के बहुत उपयोगी जवाब ("काफी करीब" भाग) के बारे में बस एक छोटी सी सटीकता: बाश के अंतर्निर्मित timeआउटपुट stderr, जबकि zsh के आउटपुट stdout

यह आदेश अंतर का वर्णन कर सकता है: time (echo abc) 2>/dev/null

बैश में, यह आउटपुट:

    $ 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.