टी एल; डॉ: alias @@='$($(fc -ln -1) |& tail -1)'
बैश के इतिहास की बातचीत की सुविधाएं कमांड के आउटपुट की जांच करने के लिए किसी भी तंत्र की पेशकश नहीं करती हैं । शेल उस स्टोर नहीं करता है , और इतिहास का विस्तार विशेष रूप से उन कमांड्स के लिए है जो आपने स्वयं चलाए हैं, या उन कमांड के कुछ हिस्सों को।
यह अंतिम कमांड को पुन: निर्देशित करने और stdout और stderr ( |&
) दोनों को कमांड प्रतिस्थापन में पाइप करने के दृष्टिकोण को छोड़ देता है । heemayl का उत्तर इसे प्राप्त करता है, लेकिन इसका उपयोग अन्य उपनाम में नहीं किया जा सकता क्योंकि शेल उपनामों के विस्तार से पहले इतिहास का विस्तार करता है, और बाद में नहीं।
मुझे शेल फ़ंक्शन में काम करने के लिए इतिहास विस्तार नहीं मिल सकता है, यहां तक कि इसे फ़ंक्शन में सक्षम करके भी set -H
। मुझे संदेह है !!
कि एक समारोह में कभी भी विस्तार नहीं किया जाएगा, और मुझे यकीन नहीं है कि अगर यह होता तो इसका विस्तार क्या होता, लेकिन अभी मुझे यकीन नहीं है कि यह ठीक क्यों है।
इसलिए, यदि आप चीजों को स्थापित करना चाहते हैं तो आप बहुत कम टाइपिंग के साथ ऐसा कर सकते हैं, आपको इतिहास से अंतिम कमांड निकालने के लिए इतिहास के विस्तार के बजाय fc
शेल बिलिन का उपयोग करना चाहिए । इसका अतिरिक्त लाभ यह है कि यह तब भी काम करता है जब इतिहास विस्तार अक्षम होता है।
जैसा कि गॉर्डन डेविसन के बैश इतिहास विस्तार ( सुपर उपयोगकर्ता पर ) में एक उपनाम बनाने का जवाब है , अनुकरण करता है । के लिए इस में प्लग लगाने में heemayl के आदेश पैदावार:$(fc -ln -1)
!!
!!
$(!! |& tail -1)
$($(fc -ln -1) |& tail -1)
यह काम करता है $(!! |& tail -1)
लेकिन एक अन्य परिभाषा में जा सकता है:
alias @@='$($(fc -ln -1) |& tail -1)'
आपको लगता है कि परिभाषा चलाते हैं, या में रख के बाद .bash_aliases
या .bashrc
और एक नया खोल शुरू करते हैं, तो आप बस टाइप कर सकते हैं @@
पिछले आदेश से आउटपुट की अंतिम पंक्ति पर अमल करने का प्रयास करने (या जो भी आप उर्फ नाम)।
ek@Io:~$ alias @@='$($(fc -ln -1) |& tail -1)'
ek@Io:~$ evolution
The program 'evolution' is currently not installed. You can install it by typing:
sudo apt-get install evolution
ek@Io:~$ @@
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
evolution-common evolution-data-server evolution-data-server-online-accounts
....