मैक ओएस एक्स में कमांड के लिए बैश पूरा


38

उबंटू में, जैसा कि कमांड टाइप करते समय मुझे कैसे मिलता है finkऔर macportsस्वतः पूर्ण कार्यक्रम के नाम हैं apt-get?

उदाहरण के लिए जब मैं टाइप करता हूं

sudo port install ca

और दबाएं tab, मैं चाहता हूं कि टर्मिनल स्वत: पूर्ण हो या मुझे उपलब्ध कमांड दिखाए।

OS X के बाद स्वतः पूर्ण कमांड भी नहीं होता है sudo!

जवाबों:


69

बैश-समापन के लिए पूर्णता जोड़ता है:

  • के बाद sudoऔर नाम कमांडwhich
  • Macports और Homebrew पैकेज नाम (वैकल्पिक)
  • known_hostsजैसे आदेशों के लिए होस्टनामssh
  • पर फोल्डर्स CDPATH

और इसी तरह। आप के साथ पूरा होने की कमांड की एक सूची प्रिंट कर सकते हैं complete -pऔर एक फ़ंक्शन के स्रोत को देख सकते हैं declare -f

Homebrew या MacPorts और बैश स्थापित करना

सबसे पहले, आपको निर्देशों के अनुसार Homebrew या MacPorts स्थापित करना होगा। नोट: दोनों को स्थापित न करें, क्योंकि वे संघर्ष करते हैं।

फिर, बैश का एक नया संस्करण स्थापित करें। ओएस एक्स में बिल्ट-इन बैश थोड़ा पुराना है, और आपको बैश> 4.1 के साथ और अधिक पूरा करने के विकल्प मिलेंगे, जिसके माध्यम से आप प्राप्त कर सकते हैं

brew install bash

या

sudo port install bash

इस पर निर्भर करता है कि आप Homebrew या MacPorts का उपयोग करते हैं या नहीं।

होमब्रे के साथ बैश-समापन स्थापित करना

स्थापित करने के लिए bash-completion, आपको निम्न करना होगा:

brew install bash-completion

और निम्नलिखित को अपने में जोड़ें ~/.bash_profile:

if [ -f $(brew --prefix)/etc/bash_completion ]; then
  . $(brew --prefix)/etc/bash_completion
fi

Homebrew वर्तमान में बैश-पूर्णता (1.3) के पुराने संस्करण को स्थापित करता है जो अभी भी बैश 3.x के साथ काम करता है, लेकिन फिर भी, बैश 4.x का उपयोग करने की सिफारिश की जाती है।

MacPorts के साथ बैश-समापन स्थापित करना

MacPorts के साथ:

sudo port install bash-completion

फिर, अपने में जोड़ें ~/.bash_profile:

if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then
  . /opt/local/etc/profile.d/bash_completion.sh
fi

पोर्ट नामों के लिए पूर्णता सक्षम करने के निर्देशों के लिए trac.macports.org/wiki/howto/bash-completion देखें ।


MacPorts के bash-completionपैकेज के बाद अतिरिक्त तर्क के रूप में पैकेज के नामों को पूरा करने के लिए समर्थन प्रदान करता है port <verb>यहां देखें , लाइनें 48-58। यह व्यवहार MacPorts wiki में इंगित किया गया है , जिसमें कहा गया है: " यह केवल फाइलों और निर्देशिकाओं के लिए नहीं है, बल्कि उदाहरणों के लिए भी है port। इसलिए आप टाइप करें port <Tab>और सभी संभावित कमांडों की एक सूची प्राप्त करें। ", हालांकि यह केवल स्पष्ट रूप से उल्लेखित है। क्रियाओं का पूरा होना (जो बहुत सरल है)।
डेनियल बेक

पैकेज के नाम कर रहे हैं स्वतः पूर्ण, विकी सिर्फ इतना है कि उल्लेख नहीं है। लिंक किए गए स्क्रिप्ट कोड देखें।
डेनियल बेक

variants.confMacPorts खुद के लिए पूरा करने के लिए नहीं है, varants.conf , सभी पोर्ट के लिए स्वचालित रूप से सेट किए गए वेरिएंट को परिभाषित करता है , जैसा कि आपके द्वारा लिंक किए गए विकी पृष्ठ पर समझाया गया है। उस पंक्ति को जोड़ने से आपके द्वारा इंस्टॉल किए गए पोर्ट के लिए संभव होने पर बैश पूरा समर्थन सक्षम हो जाता है।
केविन रीड

होमब्रे में ऑटोकंप्लीशन के बारे में टिप के लिए धन्यवाद। उस अकेले ने इस जवाब को अप वोट दिया।
पॉल वैगलैंड

बहुत बढ़िया, यह makeस्वतः पूर्ण हुआ, जो मैं चाहता था।
Мати Тернер
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.