टैब पूर्णता कमांड के लिए काम नहीं करती है


50

मैं उबंटू 11.04 बीटा 1 में कमांड के लिए टैब पूरा करने की कोशिश कर रहा हूं, सभी नवीनतम अपडेट चला रहा हूं, लेकिन यह काम नहीं करता है। (हालांकि पैकेज बैश-समापन स्थापित है)

टैब पूर्णता केवल निर्देशिका या फ़ाइलों के लिए सही ढंग से काम करती है।

किसी भी विचार कहाँ खोदने के लिए?


मैंने इस समस्या का हल askubuntu.com/questions/325807/…
DB

जवाबों:


67

जांचें कि क्या आपके पास आपके .bashrc में निम्नलिखित टुकड़ा है (डिफ़ॉल्ट रूप से वहां होना चाहिए)

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

धन्यवाद! मैंने अपने साथ .bashrc को बदल दिया है और इसलिए यह पता नहीं लगा सका कि समस्या क्या थी। अब पूरी तरह से काम करती है।
स्क्रीच

यह मेरे git bash ऑटोकॉम्पलेट्स को xubuntu 12.04 पर भी तय किया, बहुत धन्यवाद।
राजमहल

कैसे स्विच और कमांड लाइन के विकल्प के लिए ऑटो-पूरा करें apt-get? जब आप apt-get ins दर्ज करते हैं और तब टैब को ऑटो-पूरा करने के लिए दबाएं।
रेजा घोडसी 10

3
मैं यह जोड़ना चाहूंगा कि bash-completionइस काम के लिए पैकेज आवश्यक है। अजीब तरह से, मेरी कंपनी की मानक स्थापना में यह पैकेज नहीं है।
एडगर

13

मैंने सोचा कि मैं बैश समाप्ति की विफलता के लिए निम्नलिखित अतिरिक्त स्पष्टीकरण भी जोड़ूंगा- यह एक टिप्पणी के लिए बहुत लंबा है और किसी व्यक्ति के लिए उपयोगी हो सकता है, जिसे बैश पूरा होने में कोई समस्या हो, जैसा कि संभवतः यह 'सामान्य' विहित प्रश्न है सभी डुप्लिकेट संदर्भित हैं।

यहां तक कि अगर आप में उचित पंक्ति है अपने .bashrcऔर (ऊपर जवाब के रूप में) bash-completionपैकेज स्थापित, बैश पूरा होने के अभी भी खराब करता है, तो आप या तो हो सकता है shopt -s nullglobया shopt -s failglobअपने में .bashrcया .bash_aliases

निम्न परिदृश्यों को सभी उपयोगकर्ता के अनुकूलन के साथ परीक्षण किया गया था .bashrcऔर .bash_aliasesएक निष्पक्ष परीक्षण देने के लिए हटा दिया गया था, .bashrcवर्तमान में और bash-completionस्थापित के साथ उपयुक्त बैश पूरा होने के साथ ।

1) पहला परिदृश्य तब होता है जब आप shopt -s failglobअपने .bashrcया में होते हैं .bash_aliases

क्रमशः पूर्ण निर्देशिकाओं और फ़ाइलों को टैब करने का प्रयास करते समय, ये त्रुटियां होंगी:

cd Dbash: no match: "${COMP_WORDS[@]}"  
cat pabash: no match: words[0]=${!ref}${COMP_WORDS[i]}

हालाँकि, आदेश अभी भी सफलतापूर्वक पूरा हो जाएगा।

2) shopt -s nullglobसक्षम के साथ , एक निर्देशिका या एक फ़ाइल को पूरा करने की कोशिश कर रहा है बजाय एक पूरा होने के साथ सूचीबद्ध सब कुछ हो जाएगा:

cd Do
.adobe/                  .gimp-2.6/               Podcasts/
.aptitude/               .gnome2/                 Public/
.audacity-data/          .gnome2_private/         .pulse/
............

मैंने यहां लिस्टिंग को छोटा कर दिया है, क्योंकि यह बहुत लंबा था और यह सभी को पुन: पेश करने के लिए आवश्यक नहीं था।

फिर भी, कमांड पूरा करना अभी भी काम करेगा।

तो, बस हटाने shopt -s failglobया shopt -s nullglobबैश पूरा होने के साथ त्रुटियों की समस्या को भी हल कर सकते हैं, यह मानते हुए कि आपके पास आपके .bashrcऔर bash-completionस्थापित में अनुप्रस्थ रेखा है ।


1
अच्छा विवरण, जब मैंने टैब पूरा करने की कोशिश की तो मेरी समस्या हल हो गई और त्रुटि हुई >> शब्द [0] = $ {! Ref} $ {COMP_WORDS [i]}
bagustris

जबकि यह एक वर्कअराउंड के रूप में काम करता है, यह किसी भी पूर्ण प्रोग्रामर पर भरोसा करने के लिए एक खराब चीज है। चूंकि नलग्लोब (जो कि कई लोगों के लिए नाममात्र बेहतर है) और परिजन सेट हो सकते हैं, किसी भी कंपाइलर कोड की आवश्यकता होती है जो पुराने शब्दार्थ (वाइल्डकार्ड के बिना वाइल्डकार्ड में परिणाम के बिना) को वर्तमान ग्लोब सेटिंग को सहेजना चाहिए, उन्हें सेट करना चाहिए, और उन्हें पुनर्स्थापित करना होगा पुराने ग्लोब की सेटिंग बाद में, जैसा कि IFS आमतौर पर किया जाता है।
एलेक्स नॉर्थ-कीज 14

10

/etc/bash.bashrcफ़ाइल को संशोधित करने के अलावा (अन्य उत्तर) आपको bash-completionपैकेज स्थापित करने की आवश्यकता हो सकती है ।

जाँच करें, अगर /etc/bash_completionफ़ाइल से बाहर निकलता है। यदि नही:

sudo apt-get install bash-completion

(डेबियन 7 के मेरे परिचय में इसे शुरू में स्थापित नहीं किया गया था)


7

बुनियादी के रूप में यह लग सकता है सुनिश्चित करें कि बैश अपने सक्रिय खोल है

echo $SHELL

मैंने सिर्फ Ubuntu 14.04.1 LTS में अपग्रेड किया और कोई टैब ऑटो-पूर्ण नहीं था, इस पोस्ट पर सलाह का पालन करने के बाद भी, केवल यह महसूस करने के लिए कि मेरा शेल सेट किया गया था /bin/shया नहीं /bin/bash


2

Ubuntu 14.04.01 को अद्यतन करना

जांचें कि क्या आपके पास आपके .bashrc में निम्नलिखित टुकड़ा है (डिफ़ॉल्ट रूप से वहां होना चाहिए)

sudo vim /etc/bash.bashrc (फ़ाइल संपादित करने के लिए "i" टाइप करें)

    # enable bash completion in interactive shells
    if ! shopt -oq posix; then
     if [ -f /usr/share/bash-completion/bash_completion ]; then
        . /usr/share/bash-completion/bash_completion
      elif [ -f /etc/bash_completion ]; then
        . /etc/bash_completion
      fi
    fi

ऊपर से 7 लाइनें Uncomment

फ़ाइल सहेजें "esc + w + q + दर्ज करें"

बैश को फिर से शुरू करें

मार मारना


1
यह क्या करेगा? क्या यह डिफ़ॉल्ट रूप से ऐसा नहीं है?
टिम

जैसे @Tim कहता है, कि विन्यास डिफ़ॉल्ट विन्यास द्वारा प्रदान किया गया है।
ssoto

इसने मेरे लिए काम किया
थमाराइसेल्वम

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