2009-07-24 12 views
9

मैं अक्सर "टाइम" कमांड के साथ निष्पादन को स्पष्ट रूप से उपसर्ग करना भूल जाता हूं, आदर्श रूप में मैं अगले शेल प्रॉम्प्ट में देखता हूं कि आखिरी आदेश कितना वास्तविक समय लिया जाता है (प्रत्येक आदेश पर)।बैकअप प्रॉम्प्ट में प्रत्येक निष्पादित कमांड और शो को स्वचालित रूप से समय दे रहा है?

मैं पहले ही बैश दस्तावेज के माध्यम से डूब गया था, लेकिन इससे संबंधित कुछ भी नहीं मिला।

+3

यह यूनिक्स/लिनक्स स्टैक एक्सचेंज के लिए एक अच्छा सवाल है। – Flimm

उत्तर

9

आप ऐसा कर सकता है:

$ bind '"\C-j": "\C-atime \C-m"' 

या अपने ~/.inputrc में रखते:

"\C-j": "\C-atime \C-m" 

तो फिर तुम टाइप करेंगे जब आप time sleep 1 क्या करना चाहते हैं sleep 1 और बाद Ctrl +जम्मूके बजाय दर्ज करें।

मैं बाइंड कमांड (या .inputrc फ़ाइल में) j और m को स्वैप करने की अनुशंसा नहीं करता। हर बार जब आप दबाएंगे दर्ज करें तो आपको time जोड़ा जाएगा जो बहुत परेशान हो सकता है और बहु-पंक्ति कमांड टाइप करते समय त्रुटियों का कारण बनता है।

आप time अधिक कॉम्पैक्ट के उत्पादन बनाने के लिए अपने ~/.bashrc को यह जोड़ सकते हैं:

export TIMEFORMAT='r: %R, u: %U, s: %S' 

(समान मेरा उत्तर here करने के लिए।)

+0

+1 दिलचस्प चाल। – neuro

+1

बढ़िया, धन्यवाद! (खेद है कि जवाब देने में इतना समय लगा) – mark

6

Another stackoverflow thread मूलतः एक ही सवाल को शामिल किया गया।

trap 'SECONDS=0' DEBUG 
export PS1='your_normal_prompt_here ($SECONDS) # ' 

... एक पूर्णांक के रूप में सेकंड की संख्या प्रदर्शित करने के लिए, या: कि सूत्र में मेरा जवाब के रूप में संक्षेप किया जा सकता है

seconds2days() { # convert integer seconds to Ddays,HH:MM:SS 
    printf "%ddays,%02d:%02d:%02d" $(((($1/60)/60)/24)) \ 
    $(((($1/60)/60)%24)) $((($1/60)%60)) $(($1%60)) | 
    sed 's/^1days/1day/;s/^0days,\(00:\)*//;s/^0//' ; } 
trap 'SECONDS=0' DEBUG 
PS1='other_prompt_stuff_here ($(seconds2days $SECONDS)) # ' 

..for "Ddays, HH: MM: SS "प्रमुख रिक्त मूल्यों को हटाकर हटा दिया गया।

संबंधित मुद्दे