2008-09-04 20 views
181

मैक ओएस एक्स में डिफ़ॉल्ट खोल bash है, जिसे मैं आमतौर पर उपयोग करने में प्रसन्न हूं। मैं बस इसे मंजूरी के लिए ले लो। यह वास्तव में अच्छा होगा अगर यह अधिक सामग्री स्वत: पूर्ण हो गया, और मैंने इस संबंध में zsh के बारे में अच्छी बातें सुनी हैं। लेकिन मुझे वास्तव में कमांड लाइन के उपयोग को कम मात्रा में सुधारने के लिए सेटिंग के साथ घंटों तक खर्च करने का झुकाव नहीं है, क्योंकि कमांड लाइन पर मेरा जीवन इतना बुरा नहीं है।आकस्मिक उपयोग के लिए zsh पर स्विच करने योग्य मूल्य?

(मैं यह समझ के रूप में, bash भी करने के लिए विन्यस्त किया जा सकता स्वत: पूर्ण अधिक चतुराई से। यह विन्यस्त मैं वह सब के लिए उत्सुक नहीं हूँ।)

zsh का उपयोग करने जा जाएगा, यहां तक ​​कि एक छोटी संख्या मामलों में , मेरी जिंदगी को आसान बनाओ? या यदि आप सीखने के लिए समय डालते हैं तो यह केवल एक बेहतर खोल है क्यों यह बेहतर है? (उदाहरण, अच्छा होगा भी :))


@Rodney Amato & @Vulcan Eager दो अच्छे कारणों क्रमशः bash से चिपके और zsh करने के लिए स्विच करने के लिए दे। ऐसा लगता है कि मुझे दोनों की जांच करनी होगी! ओह अच्छी तरह से :)

क्या तर्क के दोनों तरफ से कोई राय है?

+12

चूंकि zsh (लगभग) बैश का सुपरसेट है, तो आप zsh पर जाने और इसे बैश की तरह उपयोग करने के साथ शुरू कर सकते हैं। फिर आप एक समय में zsh रत्न थोड़ा सा सीख सकते हैं। – orip

+0

यदि आपके पास थोड़ा सा अनुकूलन है और आप अक्सर emacs के अंदर खोल का उपयोग करते हैं, तो यह मामूली प्रतीत नहीं होता है। मैंने संबंधित प्रश्न पोस्ट किया: http://stackoverflow.com/questions/13326879/any-tips-on-switching-from-bash-to-zsh-if-often-using-shell-inside-of-emacs – justingordon

+0

केवल * * जो चीज मुझे zsh के बारे में नापसंद करती है वह है (कम से कम उबंटू पर) आपको इसे पहली बार कॉन्फ़िगर करना होगा जब आप इसे शुरू करेंगे (इसके बजाय कुछ सैने डिफ़ॉल्ट जो आप बाद में टिंकर पर कर सकते हैं) प्रदान करना होगा। यदि आप इसे प्राप्त कर सकते हैं, तो zsh सबसे अच्छा है! – zrajm

उत्तर

64

आप शायद बंद बैश के साथ चिपके हुए हैं और बस बैश पूरा होने को स्थापित करने से बेहतर कर रहे हैं:

  • आप कई फ़ाइलों से इनपुट अनुप्रेषित कर सकते हैं (अभी तक इस प्रयास करने के लिए)।

    स्थापित कर रहा है यह है बहुत आसान, http://www.caliban.org/bash/index.shtml#completion से बैश-पूर्ण-20060301.tar.gz हड़पने और

    tar -xzvf bash-completion-20060301.tar.gz 
    

    के साथ निकालने तो

    sudo cp bash_completion/bash_completion /etc 
    
    साथ/आदि के लिए bash_completion/bash_completion फ़ाइल की प्रतिलिपि

    जो आपको अपने पासवर्ड के लिए संकेत देगा। आप शायद किसी भी अतिरिक्त समापन स्क्रिप्ट के लिए /etc/bash_completion.d निर्देशिका बनाना चाहते हैं (उदाहरण के लिए मेरे पास गिट पूर्णता स्क्रिप्ट है)।

    एक बार इस अंतिम चरण के लिए किया जाता है अपने घर निर्देशिका में यकीन .bash_profile फ़ाइल बनाने के लिए है जब आप लॉगिन पूरा होने फ़ाइल को लोड करने

    if [ -f /etc/bash_completion ]; then 
        . /etc/bash_completion 
    fi 
    
    उस में

    है।

    इसका परीक्षण करने के लिए बस एक नया टर्मिनल खोलें, और सीवी पर पूरा करने का प्रयास करें और इसे आपको पूरा होने की सूची में सीवी विकल्प दिखाना चाहिए।

  • +0

    मैंने ऊपर की कोशिश की, हालांकि बाद में जब भी मैं बैश शुरू करता हूं तो मुझे 4 "यूनरी ऑपरेटर अपेक्षित" और 4 "बहुत अधिक तर्क" त्रुटियां मिलती हैं। – Annan

    +11

    यदि आप ओएसएक्स पर होमब्री का उपयोग कर रहे हैं तो आप 'ब्रू इंस्टॉल बैश-समापन' चला सकते हैं। –

    +2

    बैश-समापन 2 बेहतर है! ओएस एक्स पर: 'ब्रू टैप होमब्रू/संस्करण; ब्रू इंस्टॉल बैश-समापन 2' – Zearin

    6

    zsh में कंसोल gui कॉन्फ़िगरेशन चीज़ है। आप कॉन्फ़िगरेशन फ़ाइलों के साथ बेवकूफ़ बनाये बिना इसे बहुत जल्दी और आसानी से सेट कर सकते हैं। मुझे नहीं लगता कि आपको इसे सेट अप करने के लिए अधिक समय की आवश्यकता होगी, शायद डिफ़ॉल्ट रूप से डिफ़ॉल्ट का उपयोग करने के साथ 10 सेकंड, इसलिए आगे बढ़ें और इसे आज़माएं।

    +10

    आप इस "कंसोल gui" तक कैसे पहुंचते हैं? – mpen

    +0

    आमतौर पर यह पहली चीज है जब आप किसी भी संबंधित डॉटफाइल के बिना 'zsh' लोड करते हैं। इसे मैन्युअल रूप से प्राप्त करने के लिए, 'autoload -U + X zsh-newuser-install आज़माएं; zsh-newuser-install -f' –

    2

    स्टैले प्रोग्राम (सीयूआई) जैसे विज़ार्ड के बारे में बात कर रहा है जो पहली बार zsh चलाता है। बस कुछ प्रश्नों का उत्तर दें, डिफ़ॉल्ट देखें/बदलें और इसके लिए कॉन्फ़िगर किया गया है।

    आईबीएम डेवलपर वर्क्स के पास zsh पर बहुत अच्छे संसाधन हैं।

    मैंने बहुत उन्नत सुविधाओं का उपयोग नहीं किया है और अब तक मुझे गंभीर अंतर नहीं आया है जो किसी को भी बाश से आने में बाधा डालती है।

    कुछ उदाहरण:!?

    • पैटर्न < टैब > को पैटर्न मिलान के इतिहास में पिछले आदेश स्वत: पूर्ण कर देगा। बहुत उपयोगी।

    • आप आरएचएस पर एक प्रॉम्प्ट कॉन्फ़िगर कर सकते हैं। एक प्रयोग बाएं हाथ की ओर चौड़ाई संकेत पर रखने के लिए है, इसलिए दाएं हाथ साइड प्रॉम्प्ट के रूप में pwd (या परिवर्तनीय चौड़ाई) को प्रदर्शित करते हुए सभी आदेश अच्छी तरह से लाइन करते हैं। आकस्मिक उपयोग के लिए बिल्ली < file1 < करें 2 < file3

    81

    व्यक्तिगत रूप से, मुझे zsh पसंद है।

    आम तौर पर, आप शायद, यह और पार्टी के बीच अंतर दिखाई नहीं देगा जब तक आप जल्दी से पुनरावर्ती ग्लोबिंग तरह बातें करना चाहता हूँ:

    • उदाहरण के लिए **/*.c

    या विभिन्न प्रत्ययों के साथ विशिष्ट प्रोगोज़ को जोड़ने के लिए प्रत्यय उपनाम का उपयोग करें, ताकि आप उन्हें सीधे "निष्पादित" कर सकें। नीचे दिए गए उपनाम आपको ./my_program.c टाइप करके प्रॉम्प्ट पर एक सी स्रोत फ़ाइल "चलाने" की सुविधा देता है - जो ठीक उसी तरह काम करेगा जैसे आपने vim ./my_program.c टाइप किया था। (। एक फाइल के आइकन पर डबल क्लिक के बराबर की क्रमबद्ध करें)

    • alias -s c=vim

    या फ़ाइलों के नाम मुद्रित संशोधित आज:

    • print *(e:age today now:)

    आप शायद इन सभी चीजों को बाश में कर सकते हैं, लेकिन zsh के साथ मेरा अनुभव यह है कि अगर कुछ है तो मैं वा करने के लिए, मैं शायद इसे zsh-lovers में पा सकता हूं। मुझे पुस्तक 'From Bash to Z-Shell' वास्तव में उपयोगी भी मिलती है।

    दिमाग के साथ बजाने से विकल्पों की बड़ी संख्या भी मजेदार है!

    +1

    यहां पहले दो उदाहरणों का मतलब मेरे लिए कुछ भी नहीं है (एक आकस्मिक बैश उपयोगकर्ता zsh पर स्विच करने पर विचार कर रहा है) - क्या आप "रिकर्सिव ग्लोबिंग" का अर्थ बता सकते हैं, या "एसोसिएट विशिष्ट प्रोगोज़" विभिन्न प्रत्यय के साथ "? – aaronsnoswell

    +5

    @Aaronsnoswell: "रिकर्सिव ग्लोबिंग" का मतलब है एक उपनिर्देशिका * और इसकी सभी उपनिर्देशिका * उन फ़ाइलों के लिए खोजें जिनके नाम किसी विशेष पैटर्न से मेल खाते हैं। बैश डिफ़ॉल्ट रूप से ऐसा नहीं करता है; आप रिकर्सली खोजने के लिए 'ढूंढें' या 'पता' पाएंगे। लेकिन एक बार जब आप एक और प्रोग्राम खोज कर रहे हैं, तो आप नामों के बीच की सीमाएं खो देते हैं (जब तक कि आप सावधान न हों) साथ ही शैल की आंतरिक ग्लोबिंग क्षमताओं तक पहुंच प्राप्त कर सकते हैं, और मूल रूप से अन्य कार्यक्रम प्रदान करने के साथ ही करना होगा, या 'grep', 'awk', या' sed' जैसे प्रोग्राम के माध्यम से अपने आउटपुट को पाइप करें (सभी अपने स्वयं के दाएं में जटिल)। – cHao

    +5

    इन दिनों, आप उपरोक्त वर्णित रिकर्सिव खोज की अनुमति देने के लिए 'ग्लोबस्टार' विकल्प को बैश में सेट कर सकते हैं। बहुत यकीन है कि यह जवाब तब नहीं था जब यह जवाब लिखा गया था। – cHao

    12

    यदि आप ज़ेडएसएच का उपयोग करना चाहते हैं तो बेहतर पूरा होने के लिए, कॉन्फ़िगरेशन बहुत आसान है। पर रखें अपने ~/.zshrc:

    autoload -U zutil  # [1] 
    autoload -U compinit # [2] 
    autoload -U complist # [3] 
    compinit 
    

    हालांकि, यह ZSH के अन्य सभी शानदार सुविधाओं को जाँच के लायक है। उपरोक्त उदाहरण आपको पूर्ण समापन के साथ एक सुंदर सादा संकेत देगा। यदि आप कॉन्फ़िगरेशन के साथ बेकार नहीं करना चाहते हैं, लेकिन यह देखना चाहते हैं कि ZSH आपके लिए क्या कर सकता है, तो Google "zshrc" के लिए Google और आपको प्रारंभ करने के लिए कॉन्फ़िगरेशन का उपयोग करने के लिए कुछ तैयार हो जाएगा।

    +3

    यह किस प्रकार की चीजों को पूरा करेगा? मुझे यह जानने के बिना यादृच्छिक रूप से सामान जोड़ना पसंद नहीं है कि यह क्या कर रहा है। – mpen

    36

    zsh में स्विच करें। फ़ाइलों के हजारों के लिए zmv '(*).mp3' '$1.wma':

    1. zmv:: आप के लिए उपयोग होगा आप कर सकते हैं।
    2. zcalc: बेहद आरामदायक कैलक्यूलेटर, bc से बेहतर।
    3. zparseopts: आपकी स्क्रिप्ट को मनमाने ढंग से जटिल विकल्पों को पार्स करने के लिए एक-लाइनर।
    4. autopushd: cd के बाद आप अपनी पिछली निर्देशिका में वापस जाने के लिए हमेशा popd कर सकते हैं।
    5. फ़्लोटिंग पॉइंट समर्थन। समय-समय पर इसकी आवश्यकता होती है।
    6. हैश समर्थन करते हैं। कभी-कभी वे सिर्फ एक महत्वपूर्ण विशेषता है।
    +15

    zmv के लिए उदाहरण zmv '(*) होना चाहिए। Mp3' '$ 1.wma'।कृपया इसे सही करें, ऐसी लापरवाह प्रस्तुति अनुभवहीन और भ्रमित हो सकती है। – qed

    +0

    मैंने zsh (apt-get के माध्यम से) स्थापित किया है, इसलिए मैं zcalc को आजमा सकता हूं, लेकिन इसमें शामिल नहीं था। –

    +5

    @TravisBear 'autoload zcalc; zcalc' (हालांकि जब भी मुझे कैलकुलेटर चाहिए तो मैं खुद ही 'पायथन' टाइप करता हूं)। – Francisco

     संबंधित मुद्दे

    • कोई संबंधित समस्या नहीं^_^