डेबियन - एप्ट (एप्ट-नॉट) ऑटोकॉम्प्लेक्शन काम नहीं कर रहा है


20

मैं डेबियन जेसी 8.6 पर हूं। मैंने देखा कि apt-getपैकेज और कमांड के लिए टैब दबाने पर अपेक्षित बैश ऑटोकंप्लीशन मिलता है, लेकिन जब इसे इस्तेमाल करने की कोशिश की जाती है तो aptयह काम नहीं करता है। मुझे याद है xubuntu 16.04 का उपयोग करना जहाँ यह काम करता था, इसलिए मुझे यह अजीब लगता है कि यह यहाँ काम नहीं करता है। क्या कमांड के लिए भी इसे सक्षम करने का कोई तरीका है apt? यदि हां, तो कैसे?


क्या आपके लिए कुछ काम आया?
लिंगोब

@ लियोनोब ने मुझे उबंटू में स्थानांतरित किया, इसलिए मैं आपकी मदद नहीं कर सकता, क्षमा करें।
एंड्रिया

जवाबों:


19

डेबियन स्थापित और सक्षम 'बैश-समापन' के साथ नहीं आती है।

इसे ठीक करने के लिए, रन करें (रूट के रूप में):

apt-get install bash-completion

फिर, आपके पास दो विकल्प हैं। आप या तो (1) इसे अपने लिए प्रति उपयोगकर्ता आधार पर सक्षम कर सकते हैं, या (2) इसे विश्व स्तर पर सक्षम कर सकते हैं।

  1. यदि आप इसे अपने उपयोगकर्ता के लिए सक्षम करना चाहते हैं, तो संपादित करें ~/.bashrc- निम्नलिखित जोड़ें:

    if [ -f /etc/bash_completion ]; then
        . /etc/bash_completion
    fi
    

    इसे लॉग आउट किए बिना और वापस चलाने के लिए इसे आज़माने के लिए:

    . ~/.bashrc
    

    या एक नया खोल खोलें। फिर उपयुक्त के साथ टैब-पूर्णता का उपयोग करने का प्रयास करें। वह डॉट और शुरुआत में स्थान ( .) sourceबैश में कीवर्ड का उपयोग करने के समान है , लेकिन अधिक पोर्टेबल है।

    यदि आप चाहते हैं कि जब यह suरूट खाते में काम करे , तो रूट के होम डायरेक्टरी (आमतौर पर /root) में ही काम करें ।

  2. इसे विश्व स्तर पर सक्षम करने के लिए, (1) फ़ाइल में /etc/bash.bashrcइसके बजाय परिवर्तन करें ।

किसी के लिए भी जो सोच रहा है कि यह क्यों काम करता है, .सामने वाला वर्तमान निर्देशिका को संदर्भित नहीं/etc/bash_completion करता है , क्योंकि इसके चारों ओर रिक्त स्थान है। यह बदले में दी गई फ़ाइल की सामग्री का मूल्यांकन वर्तमान में चल रहे शेल में किया जाता है, इसके बजाय एक नए उपधारा में निष्पादित किया जाता है। यह यहाँ मानकीकृत है।

बैश में, यह .कमांड द्वारा प्रतिस्थापित किया जा सकता है source, लेकिन यह POSIX द्वारा मानकीकृत नहीं है और कम पोर्टेबल है इसलिए मैं लोगों को इसका उपयोग करने से दूर करने की प्रवृत्ति रखता हूं। इस मामले में, चूँकि यह विशेष रूप से बैश को बढ़ाने के लिए एक कार्यक्रम है, बजाय इसके कि किसी बॉर्न शेल में काम करने की ज़रूरत है या ksh, आप sourceपठनीयता के विकल्प के लिए स्वतंत्र महसूस कर सकते हैं ।


2
मैंने पहले ही ये कदम उठा लिए थे, लेकिन इससे कोई फायदा नहीं हुआ। केवल उपयुक्त के साथ काम करता है, लेकिन उपयुक्त नहीं है।
एंड्रिया

@ और, ओह, क्षमा करें, मैंने आपके प्रश्न को पूरी तरह से नहीं पढ़ा है, मुझे लगता है। मैं इस समय अपने डेबियन बॉक्स में नहीं हूं (विंडोज़ में, मेरे पास सब कुछ साइबर है, दुर्भाग्य से), लेकिन मैं घर वापस आने पर इसे अपने डेबियन मशीन से जानने की कोशिश करूंगा।
व्यट्ट8740

6

डेबियन 9 स्ट्रेच में /etc/bash.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

3

इस कॉन्फ़िगरेशन फ़ाइल को उबंटू से कॉपी करें: / usr / share / bash-पूर्ण / पूर्ण / apt को जेसी में उसी निर्देशिका में। आप यहां फाइल भी प्राप्त कर सकते हैं: http://pastebin.com/PRBMt3an


मुझे इसकी ही आवश्यकता थी। लेकिन स्वतः पूर्णता उपयुक्त के लिए काम नहीं कर रही है, मैंने कॉपी करने के बाद, डाउनलोड किए गए apt फ़ाइल का नाम बदलकर / usr / share / bash-पूर्ण / पूर्णता / कर दिया है। इसे कार्यशील कैसे करें?
कोउल

Pastebin.com/PRBMt3an फ़ाइल Windows सीआर वामो linefeed में था, यही कारण है कि यह काम नहीं किया। मुझे लाइन प्रारूप को यूनिक्स एलएफ लाइनफीड में बदलना था, इसलिए नया टर्मिनल शुरू करने के बाद काम किया।
मार्ल

यहाँ सही लाइनफ़ीड के साथ 'apt' फ़ाइल है: फाइलप्रोपर.com
klor

1

मैंने इसे कैसे हल किया

मैं स्वत: पूर्ण करने की कोशिश कर स्वत: पूर्ण समस्या नहीं थी wgetके साथ apt-get install wg[TAB][TAB]और मैं निकाल कर इसे हल करने में कामयाब --no-generateनीचे मक्खियों से पैरामीटर:

/usr/share/bash-completion/completions/apt-cache
/usr/share/bash-completion/completions/apt-get

यह उल्लेखनीय है कि ये फाइलें आपके इंस्टॉल करने के बाद ही उपलब्ध हैं bash-completion

--no-generateमैं जिस पैरामीटर का उल्लेख कर रहा हूं, उसे नीचे दी गई पंक्ति में देखा जा सकता है, लेकिन मैंने सभी को हटा दिया --no-generate, न केवल इस पंक्ति से: https://github.com/scop/bash-completion/blob/master/completions/apt-get# L28

मैं इस बिंदु पर कैसे आया?

मैं इस बिंदु पर set -vपिछले चलाने के बाद मिला apt-get install wg[TAB][TAB], जो यह दर्शाता है कि निष्पादित कमांड थी:

apt-cache --no-generate pkgnames wg

और आउटपुट एक त्रुटि थी:

E: Could not open file  - open (2: No such file or directory)

जब मैं apt-cache pkgnames wgबिना --no-generateसही तरीके से निष्पादित किया गया तो मुझे स्वतः पूर्णता के लिए सूची मिली:

root@484f5c8f56ba:/# apt-cache pkgnames wg
wgalician-minimos
wget2
wgaelic
wget
wgerman-medical
wget2-dev

उम्मीद है की यह मदद करेगा।


ठीक वैसा ही जैसा मुझे चाहिए था।
साभार

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