बैश में केस असंवेदनशील टैब पूरा


142

क्या बैश टैब पूरा मामला असंवेदनशील बनाने का कोई तरीका है?

$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.

मैं मैक ओएस एक्स 10.6 का उपयोग कर रहा हूं

जवाबों:


170

/etc/inputrcशामिल करने के लिए पाठ को अपडेट करें

पूरा-अनदेखा-मामला सेट करें

फिर ^X ^Rकॉन्फ़िगरेशन को फिर से लोड करने के लिए उपयोग करें।


30
"के रूप में अच्छी तरह से" - /etc/inputrcया ~/.inputrcएक फ़ाइल द्वारा निर्दिष्ट INPUTRCकेवल स्थानों पर यह जा सकते हैं। बैश प्रॉम्प्ट में यह दर्ज करने से काम नहीं चलेगा।
डेनिस विलियमसन

ओह! आप सही हैं :)
जॉन टी

10
^X ^Rपुनः लोड करने के लिएinputrc
विशाल

14
@ डेनिसविलियम्सन: आप bind "set completion-ignore-case on"कमांड लाइन से कर सकते हैं ; के लिए, मेरा मानना ​​है कि केवल टर्मिनल सत्र
क्ले ब्रिजेस

1
तो यह है कि msysgit है, लेकिन MSYS2 का अभाव है! यहाँ मैं इसे / etc / प्रोफाइल में खोजने की कोशिश कर रहा था ...
SamB

111

[.]inputrcबनाम का उपयोग करने के पेशेवरों और विपक्षों के विपरीत बाधा के लाभ के साथ पुनर्निर्मित .bash_profile
टोपी की टिप उसकी मदद के लिए underscore_d को।

नोट: बैश में कमांड-लाइन संपादन रीडलाइन लाइब्रेरी द्वारा प्रदान किया गया है; इसे अनुकूलित करना गैर-तुच्छ है, लेकिन अच्छी तरह से सीखने लायक है; इसकी विशेषताओं में पाठ के पूर्वनिर्धारित स्निपेट सम्मिलित करने के लिए कस्टम कीबोर्ड शॉर्टकट को परिभाषित करने की क्षमता शामिल है - बैश संदर्भ मैनुअल में कमांड लाइन संपादन देखें।

करने के लिए लगातार टैब-पूरा होने केस-संवेदी बैश में करते हैं:


विकल्प A: यदि आपके पास पहले से है:

  • एक /etc/inputrcफ़ाइल (सिस्टम-वाइड लागू होती है, संशोधन की आवश्यकता होती है sudo)
  • और / या ~/.inputrcफ़ाइल (उपयोगकर्ता-विशिष्ट)

    और / या

आप रीडलाइन लाइब्रेरी को बड़े पैमाने पर कस्टमाइज़ करने की योजना बना रहे हैं और / या कस्टमाइज़ेशन को स्क्रिप्ट के लिए प्रभावी बनाना चाहते हैं, जब वे कॉल करते हैं read -e:

लाइन जोड़ें

set completion-ignore-case on

करने के लिए या तो फ़ाइल आप सेटिंग चाहते हैं पर निर्भर करता है के लिए प्रभावी होने के लिए सभी उपयोगकर्ताओं या वर्तमान उपयोगकर्ता (, फ़ाइल बनाने यदि आवश्यक हो तो)।

एक संबंधित आदेश जो फ़ाइल और निर्देशिका नामों को पूरा करना आसान बनाता है:

set show-all-if-ambiguous on

एक से अधिक मैच होने पर यह टैब को दो बार दबाने के लिए अनावश्यक बनाता है ।


विकल्प बी: वैकल्पिक रूप से, आप ReadLine अपने उपयोगकर्ता-विशिष्ट के लिए आदेश जोड़ सकते हैं ~/.bash_profileओएस एक्स (या पर फ़ाइल ~/.bashrcलिनक्स पर), उन्हें एक के रूप में पास करके एक करने के लिए तर्क bindनिर्मित :

bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"

ध्यान दें कि bindमें आदेश ~/.bash_profile/ ~/.bashrcया तो में बराबर आदेशों से प्राथमिकता दी जाती /etc/inputrcया ~/.inputrc

जैसा कि ऊपर बताया गया है, रीडलाइन कॉन्फ़िगरेशन को इस तरह से परिभाषित किया गया है जो उन लिपियों में प्रभावी नहीं होगा जो उपयोगकर्ता इनपुट पढ़ने के लिए रीडलाइन समर्थन को सक्रिय करने के लिए कहते हैं ।read -e


10
शो-सब-अगर-अस्पष्ट बहुत अच्छा है! मैं अक्सर सोचता था कि उन्होंने मुझे उस एक्शन को करने के लिए दो बार टैब क्यों दिया। मेरे भविष्य में हजारों कीस्ट्रोक्स बच गए! धन्यवाद!
उपयोगकर्ता 34112

4
बहुत बढ़िया, यह cdआज्ञाओं के लिए भी काम करता है । जो इस सवाल को हल करता है और मुझे हजारों कीस्ट्रोक्स से भी बचाएगा। :)
hoosierEE

1
महान बिंदु फिर से show-all-if-ambiguous। हालाँकि, जब से आप "एक विकल्प के रूप में" कहते हैं, क्या वास्तव में इसके माध्यम से ऐसा करने का कोई लाभ है bind, जब inputrcफाइलें उस अनावश्यक को बनाने लगती हैं?
अंडरस्कोर_ड

1
@underscore_d: अच्छा सवाल; कृपया मेरा अद्यतन उत्तर देखें।
mklement0

1
अच्छा है धन्यवाद! डेबियन 8.2 पर मेरे पास न तो था inputrc, लेकिन मैंने खुशी से बनाया ~/.inputrcऔर जोड़ा, साथ ही अन्य वास्तव में उपयोगी निर्देश। मुझे लगता है कि हम सभी पाठकों को पता है कि /etc/inputrc अन्य उपयोगकर्ताओं को प्रभावित करता है (जब तक कि बाद की प्रभावित सेटिंग्स को ओवरराइड नहीं किया जाता है)? अभी जब हम कैवेट का उल्लेख कर रहे हैं;)
अंडरस्कोर_ड

1

सभी उपयोगकर्ताओं के लिए कॉन्फ़िगरेशन बदलने से बचने और रूट अनुमतियों से बचने के लिए निम्नलिखित का उपयोग करें:

if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
echo 'set completion-ignore-case on' >> ~/.inputrc

फिर पुनः लॉगिन या पुनः लोड करें ~ / .inputrc

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