बैश शेल टैब पूरा हो रहा है, ~ का विस्तार न करें


12

Tabजब मैं शेल (bash) का उपयोग करता हूं तो मैं कुंजी का उपयोग करता हूं।

लेकिन मुझे गुस्सा आ रहा है जो ~हमेशा के लिए विस्तारित हो जाता है /home/"user"। मुझे नहीं लगता कि यह हमेशा से ऐसा रहा है; क्या इस व्यवहार को रोकने का कोई तरीका है?

एक उदाहरण:

  1. cj@zap:~$ ls ~/
  2. दबाएँ Tab
  3. cj@zap:~$ ls /home/cj/

मैं जारी रखना चाहूंगा ~/और अंत नहीं करूंगा /home/cj/


2
"मुझे नहीं लगता कि यह हमेशा से ऐसा रहा है।" - प्रोग्रामेबल कम्प्लीट रीडलाइन सेटिंग set expand-tilde off(डिफॉल्ट या सेट इन ~/.inputrc) को ओवरराइड करता है ।
अगली सूचना तक रोक दिया गया।

"bind -v | grep tilde" रिटर्न "सेट एक्सपेंड-टिल्ड ऑफ" ... तो मुझे नहीं लगता कि इससे मदद मिलेगी।
जोहान

आपकी नजर पड़ सकती है shopt -p direxpand
Gam3

जवाबों:


10

टिल्ड का विस्तार अक्षम करना त्वरित और दर्द रहित है। इसे खोलें ~/.bashrcऔर डालें:

_expand()
{
    return 0;
}

यह से विस्तारित फ़ंक्शन को ओवरराइड करेगा /etc/bash_completion। यदि आप भविष्य में विस्तार वापस चाहते हैं, तो यह फ़ंक्शन के ऊपर टिप्पणी करने की अनुशंसा करता है। परिवर्तन एक नए उदाहरण में प्रभावी होंगे।


हालांकि _expand(){ true; }कम है :)
टीआईजी

यह नहीं होगा _expand(){ false; }? @tig
जॉन टी

2
@ जॉन: नहीं यह सच होना चाहिए। trueसफल परिणाम और सफल परिणाम देता है 0, इसलिए है return 0के बराबर है trueसे बाहर निकलने की स्थिति में है, और return 1के बराबर है false। बस कोशिश करो true; echo $?और false; echo $?
बाघ

@tig बहुत अधिक प्रोग्रामिंग ने मुझे भ्रमित किया है ... codepad.org/Frb3RyAN इसी तरह, आप इसे बहुत सारे कोड में देखते हैं (शीर्ष देखें): cs.nthu.edu.tw/~tingting/DS_mid_solution/pdf मुझे लगता है कि यह स्विच अप है। GNU टूल में अधिक यथार्थवादी अर्थ को इंगित करने के लिए, "सच है, प्रोग्राम सफलतापूर्वक चला गया" या "गलत - प्रोग्राम गलत तरीके से चला"।
जॉन टी

@ जॉन: यह ठीक है :), «यहां तक ​​कि जॉन टी गलत हो सकता है» (नाराज न हों :))
tig

5

नए bash_completion के साथ ऐसा लगता है कि आपको __expand_tilde_by_ref को भी ओवरराइड करना होगा:

__expand_tilde_by_ref() {
  return 0
}

1

और भी अधिक कॉम्पैक्ट रूप से:

_expand() { :; }

... "के रूप में:" एक शेल "सच" के बराबर में निर्मित है :-)


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