क्या किसी को पता है कि बैश में अभी भी डिफ़ॉल्ट रूप से इतिहास प्रतिस्थापन क्यों सक्षम है? मेरे कई वर्षों के लिए .bashrc
शामिल set +H
किया गया है लेकिन कुछ अन्य लोग अभी भी इस सुविधा से काट रहे हैं।
यह देखते हुए कि बहुत से हर कोई कॉपी-पेस्ट सुविधाओं के साथ टर्मिनलों का उपयोग कर रहा है औरreadline
लाइब्रेरी और इतिहास प्रतिस्थापन के साथ संकलित बैश केवल इंटरैक्टिव गोले में डिफ़ॉल्ट रूप से सक्षम है, क्या वास्तव में सुविधा होने का कोई कारण है? सभी गोले के लिए डिफ़ॉल्ट रूप से अक्षम होने पर भी कोई मौजूदा स्क्रिप्ट नहीं तोड़ी जाएगी।
यदि आप नहीं जानते कि इतिहास प्रतिस्थापन क्यों टूट गया है तो यह कोशिश करें:
$ set +H # disable feature history substitution
$ echo "WTF???!?!!?"
WTF???!?!!?
$ set -H # enable feature history substitution
$ echo "WTF???!?!!?"
echo WTF???echo WTF???!?!!?
WTF???echo WTF???!?!!?
(स्पष्ट रूप से इस सुविधा के प्रमुख मुद्दे हैं यदि यह सभी स्क्रिप्टिंग के लिए डिफ़ॉल्ट रूप से अक्षम है और निष्पादन से पहले परिणामों को सत्यापित करने के लिए एक सुविधा मौजूद है shopt -s histverify
।)
यह सभी देखें:
&
? मुझे एक फ़ाइल नाम से बचने या उद्धरण की आवश्यकता क्यों होनी चाहिए ?
? ऐसे लोगों के लिए UI हैं जो सोचते हैं कि यह एक समस्या है।
!$
दिन में कई बार उपयोग करता हूं , और !!
काफी बार भी। मुझे स्वीकार करना होगा कि मैं अन्य इतिहास प्रतिस्थापनों का उपयोग नहीं करता हूं, लेकिन अगर मैं वर्षों से उपयोग किए जा रहे शेल के डिफ़ॉल्ट व्यवहार को अचानक बदल दिया है तो मैं निश्चित रूप से दुखी होऊंगा।
ls -l foo/bar/baz/weeble.cpp
के साथless !$
तुलना में याद आदेश और इसे संपादित करें।