संपादित करें
TL; DR : में .inputrc
और फ़ंक्शन में स्वतः पूर्णता शॉर्टकट बनाएँ .bashrc
। सामान्य रूप से कमांड चलाएं, जिसमें टाइप करें, लेकिन इसके बजाय ENTER, उस शॉर्टकट को दबाएं जिसे आपने निर्दिष्ट किया था.inputrc
इस सवाल पर इनाम रखने वाले व्यक्ति ने कहा:
"सभी मौजूदा उत्तरों को कमांड के बाद एक अतिरिक्त कमांड टाइप करने की आवश्यकता है। मुझे ऐसा उत्तर चाहिए जो यह स्वचालित रूप से करता हो।"
इस समस्या को मैं पर ठोकर खाई किया है करने के लिए समाधान शोध जबकि इस stackexchange से सवाल है, जो बंधन की अनुमति देता है CtrlJआदेशों की एक दृश्य करने के लिए: Ctrlaकमांड आपके द्वारा दर्ज के सामने जगह "मेसर" स्ट्रिंग, (पंक्ति के आरम्भ में ले जाते हैं) Ctrlm(अमल)
इस प्रकार आप ENTERसमय को मापने के लिए ऑटो-पूर्णता और अलग-अलग कमांड की कार्यक्षमता प्राप्त करते हैं, जबकि मैं दूसरे फ़ंक्शन के मूल उद्देश्य को बनाए रखता हूं ।
अब तक, यहाँ मेरी ~/.inputrc
फ़ाइल की सामग्रियां हैं :
"\C-j": "\C-a measure \C-m"
और यहाँ की सामग्री हैं .bashrc
(ध्यान दें, मैं हमेशा के लिए बैश का उपयोग नहीं कर रहा हूं - मैं अपने शेल के रूप में एमएक्सएच का उपयोग करता हूं, इसलिए यह वही है जो आप मूल पोस्ट में देखते हैं। कार्यक्षमता अभी भी वही है)
PS1=' serg@ubuntu [$(pwd)]
================================
$ '
function measure ()
{
/usr/bin/time --output="/home/xieerqi/.timefile" -f "%e" $@
if [ $( cat ~/.timefile| cut -d'.' -f1 ) -gt 15 ]; then
notify-send "Hi , $@ is done !"
fi
}
मूल पोस्ट
यहाँ मेरा विचार है - एक फ़ंक्शन का उपयोग करें .bashrc
। मूल सिद्धांत - /usr/bin/time
कमांड को पूरा करने में लगने वाले समय को मापने के लिए उपयोग करें, और यदि यह 15 सेकंड से अधिक है, तो अधिसूचना भेजें।
function measure ()
{
if [ $( /usr/bin/time -f "%e" $@ 2>&1 >/dev/null ) -gt 15 ]; then
notify-send "Hi , $@ is done !"
fi
}
यहां मैं आउटपुट को रीडायरेक्ट कर रहा हूं /dev/null
, लेकिन आउटपुट देखने के लिए, फाइल को रीडायरेक्ट करना भी किया जा सकता है।
एक बेहतर दृष्टिकोण, IMHO, आपके घर के फ़ोल्डर में कुछ फ़ाइल के लिए समय का आउटपुट भेजना है (बस इसलिए कि आप अपने सिस्टम को टाइमफाइल्स के साथ प्रदूषित नहीं करते हैं, और हमेशा जानते हैं कि कहाँ देखना है)। यहाँ वह दूसरा संस्करण है
function measure ()
{
/usr/bin/time --output=~/.timefile -f "%e" $@
if [ $( cat ~/.timefile | cut -d'.' -f1 ) -gt 15 ]; then
notify-send "Hi , $@ is done !"
fi
}
और यहाँ पहले और दूसरे संस्करण के स्क्रीनशॉट हैं, उसी क्रम में
पहला संस्करण, कोई आउटपुट नहीं
दूसरा संस्करण, आउटपुट के साथ