टर्मिनल स्वतः पूर्ण ठीक से काम नहीं करता है


56

यदि मैं apt-gहिट करने के बाद जैसे कोई कमांड टाइप करना शुरू करता हूं tab, तो शेल कमांड को पूरा करता है apt-get, लेकिन कमांड के दूसरे भाग के लिए install, जैसे अगर मैं कुछ वर्ण दर्ज करता हूं insta, जैसे कि हिट करना tab, इसे पूरा नहीं करता है install

एक और उदाहरण: मैं sudoमारने के बाद tabकुछ भी पूरा नहीं करता। उदाहरण के लिए: sudo apt-ge[ tab] और कुछ भी नहीं।

मैंने मिनी आइसो (40 एमबी नेटवर्क इंस्टॉलर) का उपयोग करके उबंटू स्थापित किया, इसलिए शायद एक विन्यास है जो मैंने याद किया!

मैंने इस कोड को अपने साथ जोड़ा है .bashrcलेकिन फिर भी यह काम नहीं करता है:

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

मैं भी की अनुमति जाँच की है .bashrcऔर यह है -rw-r--r--

मैं नए वातावरण में परिवर्तनों को लागू करने के लिए .bashrcउपयोग source .bashrcकरने के बाद परिवर्तनों का स्रोत भी हूं लेकिन फिर भी कोई प्रभाव नहीं है।

मैं उपयोग करता हूं xfce4-terminalइसलिए मुझे लगा कि यह टर्मिनल हो सकता है और बैश नहीं।

लेकिन संपादन:

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

और बदल रहा है:

<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>

सेवा:

<property name="&lt;Super&gt;Tab" type="string" value="empty"/>

कोई फर्क नहीं पड़ता।

जवाबों:


83

bash-completion बैश स्क्रिप्ट का एक सेट है जो विशिष्ट आदेशों के लिए अनुकूलित पूरा करने में सक्षम बनाता है।

यह केवल फाइलों और निर्देशिकाओं के लिए नहीं है, बल्कि उदाहरणों के लिए भी है। इसलिए आप कमांड्स का आंशिक हिस्सा टाइप करें और हिटिंग करके Tabहम कमांड्स का एक ऑटो पूरा करें।

स्थापना

चरण 1: बैश-पूर्णता स्थापित करें

$ sudo apt-get install bash-completion

और कुछ बार यह काम करता है अगर हम इसे फोलविंग कमांड द्वारा फिर से स्थापित करते हैं:

$ sudo apt-get install --reinstall bash-completion

चरण 2: अपनी .bashrcफ़ाइल में बैश-समापन सक्षम करें

अपना खोलें gedit ~/.bashrcऔर यदि ये सामग्री वहां मौजूद नहीं है, तो उन्हें इसके अंत में जोड़ें और इसे सहेजें।

# 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

महत्वपूर्ण: परिवर्तनों के बाद आपको अपने टर्मिनल को फिर से चालू ~/.bashrcकरने source ~/.bashrcया फिर से खोलने की आवश्यकता होती है । इसे अब ठीक किया जाना चाहिए।


1
मैं पुष्टि करना चाहूंगा कि कोड के उपरोक्त ब्लॉक को ~ / .bashrc फ़ाइल में जोड़ना मेरे लिए काम करता है। सिर्फ एक टिप्पणी; आपको वास्तव में लॉग आउट करने और इसे काम करने के लिए फिर से लॉग इन करने की आवश्यकता नहीं है (आप जो काम करना चाहते हैं उसे समाप्त नहीं करना चाहते हैं), आप बस चला सकते हैं source ~/.bashrc
nullgeppetto

मुझे काम करने के लिए टर्मिनल को फिर से खोलना पड़ा!
गिल्बर्टो अल्बिनो

2
पूर्णता ने अचानक मेरे लिए काम करना बंद कर दिया, उपरोक्त कदम समस्या को ठीक नहीं करते हैं। समस्या के निवारण के बारे में कोई विचार? Ubuntu 16.04 पर
गुडलागुर इगिल्सन

1
चरण 2 यह मेरे लिए करता है। या से टेम्पलेट प्राप्त करें/etc/skel/.bashrc
हेंडी इरावन

1
@SergioIvanuzzo निश्चित नहीं है कि आप किस मुद्दे का सामना कर रहे हैं, आप इस unix.stackexchange.com/q/219342/72456 पर नज़र डाल सकते हैं, इससे आपको जो समस्या है उसके लिए अपना प्रश्न खोल सकते हैं।
α41sнιη

27

यदि आपका मामला टर्मिनल टैब के तहत काम नहीं कर रहा है Xfce,

समाधान इस प्रकार है:

  1. ओपन Application Menu> Settings> Window Manager
  2. Keyboardटैब पर क्लिक करें ।
  3. Switch window for same applicationसेटिंग साफ़ करें ।

विंडो मैनेजर स्क्रीनशॉट एक ही एप्लिकेशन के लिए विंडो को कैसे साफ़ करें

मैं समाधान मिल गया है यहाँ


स्वीकार किए गए awnser की कोशिश की, लेकिन सब कुछ पहले से ही था। यह वास्तव में मेरे लिए समाधान था।
user1226868

डिट्टो। महान संकेत।
सेरेब्रो

बहुत बहुत धन्यवाद, मैं वास्तव में इस पर अपना दिमाग खो रहा था।
डस्टिन काउल्स

2
फिर भी मुझे मई 2018 तक समाधान की आवश्यकता थी।
clifgray

धन्यवाद मेरे लिए काम किया
MMH

3

आप एक ऐसे शेल में भी हो सकते हैं जो ऑटो पूर्ण का समर्थन नहीं करता (उदा: बॉर्न शेल | एसएच)। यदि आप BASH ऑटो को पूरा करना चाहते हैं, तो आपको कमांड के बजाय BASH (बॉर्न अगेन SHell) से स्विच करने की आवश्यकता है

chsh -s /bin/bash

स्रोत: उबंटू विकी - गोले बदलना


1

मेरे मामले में, मैं एक स्क्रिप्ट निष्पादित करने की कोशिश कर रहा था ./myScript.sh, और टाइपिंग ./my[tab]ऑटो-पूर्ण नहीं होगी।

मुझे फ़ाइल और ऑटो-पूर्ण करने के लिए निष्पादित अनुमतियों को जोड़ना पड़ा।

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