इतिहास विस्तार को किसी विशेष कमांड लाइन पर निष्क्रिय करने में सक्षम होने के लिए, आप निम्न spaceके 3 वर्ण के रूप में उपयोग कर सकते हैं $histchars:
histchars='!^ '
फिर, यदि आप एक अग्रणी स्थान के साथ अपनी कमांड में प्रवेश करते हैं, तो इतिहास का विस्तार नहीं किया जाएगा।
bash-4.3$ echo "#!/bin/bash"
bash: !/bin/bash: event not found
bash-4.3$ echo "#!/bin/bash"
#!/bin/bash
नोट हालांकि प्रमुख रिक्त स्थान भी उपयोग किया जाता है कि जब $HISTCONTROLहोता है ignorespaceएक तरह से बताने के लिए के रूप में bashइतिहास में एक कमांड लाइन रिकॉर्ड करने के लिए नहीं।
यदि आप दोनों सुविधाओं को अनिश्चित काल तक चाहते हैं, तो आपको दूसरे चरित्र को 3 के चरित्र के रूप में चुनना होगा $histchars। आप वह चाहते हैं जो आपके आदेश की व्याख्या करने के तरीके को प्रभावित न करे। कुछ विकल्प:
- बैकस्लैश (
\) का उपयोग करना : \echo fooकाम करता है लेकिन इसमें उपनाम या कीवर्ड को अक्षम करने का दुष्प्रभाव है।
- TAB: इसे पहली स्थिति में सम्मिलित करने के लिए, आपको Ctrl+VTabहालांकि प्रेस करना होगा ।
अगर आप दो चाबियाँ टाइपिंग कोई आपत्ति नहीं है, आप किसी भी चरित्र है कि सामान्य रूप से प्रथम स्थान पर दिखाई नहीं करता है (चुन सकते हैं %, @, ?, लेने अपनी खुद की) है और इसके लिए एक खाली उर्फ बनाना:
histchars='!^%'
alias %=
फिर उस चरित्र, स्थान और अपने आदेश को दर्ज करें:
bash-4.3$ % echo !!
!!
(आप एक कमांड रिकॉर्ड नहीं कर पाएंगे, जहां इतिहास प्रतिस्थापन को अक्षम कर दिया गया है। यह भी ध्यान दें कि डिफ़ॉल्ट 3 जी चरित्र $histcharsहै #ताकि इतिहास का विस्तार टिप्पणियों में न किया जाए। यदि आप इसे बदलते हैं, और आप टिप्पणियों को दर्ज करते हैं। प्रॉम्प्ट, आपको इस तथ्य के बारे में पता होना चाहिए कि (अनुक्रम वहां विस्तारित हो सकते हैं)।