आकस्मिक उपयोग के लिए zsh पर स्विच करना? [बन्द है]


192

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

(जैसा कि मैं इसे समझता हूं, इसे bashऔर अधिक चतुराई से ऑटो-पूर्ण करने के लिए कॉन्फ़िगर किया जा सकता है। यह कॉन्फ़िगर करने वाला मैं वह सब नहीं है जो उत्सुक है।)

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


@ रॉडनी आमेटो और @ वल्कन एगर दो अच्छे कारण देते हैं जो क्रमशः चिपकते bashऔर बदलते रहते हैं zsh। लगता है, मुझे दोनों की जाँच करनी होगी! ओह अच्छा:)

क्या तर्क के दोनों पक्षों से राय रखने वाला कोई है?


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

यदि आपके पास थोड़ा सा बैश अनुकूलन है और आप अक्सर emacs के अंदर शेल का उपयोग करते हैं, तो यह तुच्छ नहीं लगता है। मैंने संबंधित प्रश्न पोस्ट किया: stackoverflow.com/questions/13326879/…
justingordon

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

जवाबों:


68

आकस्मिक उपयोग के लिए आप संभवतः बैश के साथ चिपके रहना और बस बैश पूरा होने से बेहतर हैं।

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

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

उसके बाद bash_completion / bash_completion फ़ाइल को / etc के साथ कॉपी करें

sudo cp bash_completion/bash_completion /etc

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

एक बार ऐसा करने के बाद अंतिम चरण यह सुनिश्चित करना है कि आपके होम निर्देशिका में .bash_profile फ़ाइल है

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

जब आप लॉगिन करते हैं तो पूर्ण फाइल लोड करने के लिए।

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


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

12
यदि आप OSX पर होमब्रे का उपयोग कर रहे हैं तो आप चला सकते हैं brew install bash-completion
नाथन विलासेसा

3
बैश-कम्पोज़िट 2 बेहतर है! OS X पर:brew tap homebrew/versions; brew install bash-completion2
Zearin

85

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

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

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

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

  • alias -s c=vim

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

  • print *(e:age today now:)

आप शायद इन सभी चीजों को मार सकते हैं, लेकिन zsh के साथ मेरा अनुभव यह है कि अगर कुछ ऐसा है जो मैं करना चाहता हूं, तो शायद मैं इसे zsh-प्रेमियों में पा सकता हूं । मुझे B बैश टू जेड-शेल ’ पुस्तक भी वास्तव में उपयोगी लगती है।

दिमाग के साथ बड़ी संख्या में विकल्पों के साथ खेलना बहुत अच्छा है!


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

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

6
इन दिनों, आप globstarऊपर बताए अनुसार पुनरावर्ती खोज की अनुमति देने के लिए बैश में विकल्प सेट कर सकते हैं। बहुत यकीन है कि जब यह जवाब लिखा था, तब भी ऐसा नहीं था।
cHao

साथ glob_star_shortमें zsh, अब आप क्या कर सकते हैं **.cजो के रूप में व्याख्या की है, **/*.c
PythonNut

मैं उपयोग करता हूं zsh 5.3और उसके command not found: ageसाथ मिलता हूंprint *(e:age today now:)
टिमो

38

Zsh पर स्विच करें। आपके पास इसकी पहुंच होगी:

  1. zmv: आप कर सकते हैं: zmv '(*).mp3' '$1.wma'हजारों फाइलों के लिए।
  2. zcalc: बेहद आरामदायक कैलकुलेटर, से बेहतर bc
  3. zparseopts: आपकी लिपि को दिए गए मनमाने ढंग से जटिल विकल्पों को पार्स करने के लिए वन-लाइनर।
  4. autopushd: आप हमेशा अपनी पिछली निर्देशिका में वापस बदलने के popdबाद कर सकते हैं cd
  5. फ्लोटिंग पॉइंट सपोर्ट। समय-समय पर इसकी जरूरत होती है।
  6. हाशिए समर्थन करते हैं। कभी-कभी वे सिर्फ एक प्रमुख विशेषता होते हैं।

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

5
@TravisBear autoload zcalc; zcalc(हालांकि pythonजब भी मुझे कैलकुलेटर की आवश्यकता होती है तो मैं खुद टाइप करता हूं)।
फ्रांसिस्को

9
"ऑटोपुश: आप सीडी को अपनी पिछली निर्देशिका में वापस बदलने के लिए हमेशा पॉप कर सकते हैं।" नहीं है कि बस सीडी के बराबर -?
मिन्हाज़ 1

4
zmvऔर zcalcबॉक्स से बाहर उपलब्ध नहीं हैं। यह स्पष्ट नहीं है कि zmvसिर्फ फाइलों का नाम बदल रहा है; मुझे लगा कि आप प्रारूप को परिवर्तित कर रहे होंगे। मुझे नहीं पता कि "हैश" समर्थन का क्या मतलब है। यह पोस्ट ऐसा लगता है कि यह केवल उन लोगों के लिए "उपयोगी" है जो पहले से ही zsh जानते हैं।
एमपीएन

1
@ मर्क इस मामले में, "हैश" "साहचर्य सरणी" का पर्याय है। bash4 इस उत्तर से कुछ महीने पहले ही जारी किया गया था।
शेपनर

13

यदि आप सभी के लिए ZSH का उपयोग करना चाहते हैं तो बेहतर पूर्णता है, विन्यास बहुत आसान है। इसे अपने ~ / .zshrc में रखें:

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

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


3
यह किस प्रकार की चीजों के लिए पूरा होने को जोड़ देगा? मुझे बेतरतीब ढंग से सामान जोड़ना पसंद नहीं है बिना यह जाने कि यह क्या कर रहा है।
मप्र २६'१४

6

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


10
आप इस "कंसोल गिनी" तक कैसे पहुँच सकते हैं?
मप्र २६'१४

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

3

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

आईबीएम डेवलपरवॉर्क्स के पास ज़ीश के महान संसाधन हैं।

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

कुछ उदाहरण:

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

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

  • आप कई फ़ाइलों से इनपुट को पुनर्निर्देशित कर सकते हैं (अभी तक यह कोशिश करने के लिए): बिल्ली <file1 <file2 <file3

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