हर बैश कमांड से पहले एक कमांड


17

क्या किसी को हर सत्र से पहले 'टाइम' कमांड डालने का मतलब पता है?


1
इसलिए ... आप प्रत्येक कमांडलाइन पर 'समय' को स्वचालित रूप से प्रस्तुत करना चाहते हैं?
क्वैककोट

1
हां, उत्कृष्ट रूप से ... प्रदर्शन के लिए स्पष्ट रूप से
mesuarament

जवाबों:


37

पहले गलत उत्तर के लिए क्षमा करें, मुझे आपका प्रश्न याद आ गया।

प्रत्येक कमांड से पहले जोड़ा गया समय निकालने के लिए, आप शेल पर निष्पादित करते हैं, आप इस तरह से कुछ कर सकते हैं

bind 'RETURN: "\e[1~time \e[4~\n"'

यह रिटर्न कीज को रिवाइंड करेगा। अब हर बार जब आप एक newline \ n लिखने के बजाय रिटर्न दबाते हैं तो यह लाइन की शुरुआत में जाएगा, टेक्स्ट 'टाइम' और एक स्पेस एंटर करें, लाइन के अंत में जाएं और newline \ n एंटर करें जिससे वांछित उत्पन्न होता है प्रभाव।

यदि आप अपनी Enter कुंजी का त्याग नहीं करना चाहते हैं, तो आप कमांड को इस तरह से बांधकर F12 की तरह 'दूसरी' बेंचमार्क-एंटर कुंजी बना सकते हैं।

bind '"\e[24~": "\e[1~time \e[4~\n"'

अब बदले की कुंजी की जगह आप F12 को बाध्य करें।

इस सब की पृष्ठभूमि यह है कि bash आदेशों को पढ़ने के लिए GNU रीडलाइन का उपयोग करता है। तो आगे की कमांड हेरफेर आदि के लिए रीडलाइन एक अच्छा शुरुआती बिंदु होगा।


1
+1 अच्छा समाधान! मुझे मानदंड दर्ज करने का विचार पसंद है जो नियमित रूप से दर्ज कुंजी से अलग है।
क्वैककोट को

यह एक चतुर विचार है। प्रत्येक कमांड से पहले उपयोगकर्ता-परिभाषित फ़ंक्शन को निष्पादित करने के लिए आप इसे कैसे सामान्य कर सकते हैं? मैं नहीं जानता कि कैसे एक ही बंधन में बैश कोड और एक रीडलाइन फ़ंक्शन को संयोजित किया जाए।
गिले

क्या यह मैक में नहीं चलेगा? मैंने टर्मिनल में कमांड चलाया और मेरी एंटर कुंजी अब कुछ भी नहीं करती है।
अक्की

6

मुझे एहसास है कि यह इस सवाल के दायरे से बाहर है लेकिन ...

में zshआप अपने में निम्नलिखित चर सेट करता है, तो (जो, मेरी जानकारी बैश का एक सुपर सेट करने के लिए है) .zshrcफ़ाइल:

export REPORTTIME=5

प्रत्येक कमांड जो 5 सेकंड से अधिक समय लेती है (मुझे पूरा यकीन है) का आउटपुट प्रदर्शित करेगा time। सभी आदेश जो अधिक तेज़ी से पूरे होते हैं वे नहीं करते। और उन मामलों में कोई वास्तव में परवाह नहीं करता है, इसलिए चीजों को अव्यवस्थित नहीं करना अच्छा है। इसमें कई अन्य अच्छे फीचर भी हैं जिनका zshआनंद आप इस समय ले सकते हैं।


अच्छी टिप। जबकि zsh निश्चित रूप से की कार्यक्षमता का सुपरसेट है बैश , अपने वाक्य रचना की वाक्य रचना का सुपरसेट नहीं है बैश , तो यह प्रतिस्थापन एक "में ड्रॉप" नहीं है।
क्रिस जॉन्सन

1

अपने शीघ्र स्ट्रिंग में \ t शामिल करें। इसमें आपके प्रॉम्प्ट में वह समय शामिल होगा जहां आप इसे शामिल करते हैं। देखें: http://www.ibm.com/developerworks/linux/library/l-tip-prompt/


जिस समय प्रॉम्प्ट उत्पन्न होता है, उस समय का वर्तमान समय होता है, न कि पिछली कमांड को निष्पादित करने में लगने वाला समय।
डेनिस विलियमसन

सच; और उसके और अगले प्रॉम्प्ट के वर्तमान समय के बीच का अंतर रन-टाइम (शून्य से टाइपिंग का समय, निश्चित रूप से - चिपकाना आपका मित्र है)। कोई महत्वपूर्ण पुनर्मूल्यांकन आवश्यक नहीं है।
JRobert

0

PS1 ऐसा कुछ करने के लिए मानक तरीके की तरह लगता है।


2
यह प्रदर्शन को संशोधित करता है, वास्तविक निष्पादित कमांड को नहीं।
ग्रेविटी

@grawity Right - लेकिन यह आपको वही मिलेगा जो आप चाहते हैं ... हर लाइन के लिए समय पूर्व निर्धारित है।
जेसन सुंदरम

3
जो कि क्या timeकरता है से पूरी तरह से अलग है (यह मापने के लिए एक कमांड के लिए कितना समय लगा)।
ग्रिटिटी

@ शुद्धता, मुझे लगता है कि आप सही हैं - आपको खुद ही घटाव करना होगा। @Jrobert की तरह ही विचार था।
जेसन सुंदरम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.