ZSH के साथ Apt-get * वाइल्डकार्ड


15

ZSH:

sudo apt-get remove --purge ubuntuone-* 
ERROR: zsh: no matches found: ubuntuone-*

बैश पर काम करता है। समस्या क्या है ? :-D

जवाबों:


13

हां, zshऔर bashइस संबंध में अलग तरह से व्यवहार करें।

में zsh, जब आप कहते हैं कि " ubuntuone-*" यह फ़ाइलों को साथ शुरू करने के लिए अपने वर्तमान कार्यशील निर्देशिका में लग रहा है ubuntuone-- के बाद से यह किसी भी नहीं मिल रहा है, यह कहते हैं, " no matches" और आदेश नहीं चलता है।

bashएक अलग कील लेता है - यह उन फ़ाइलों की भी तलाश करता है ubuntuone-जो वर्तमान कार्यशील निर्देशिका में शुरू होती हैं , लेकिन अगर यह नहीं मिलता है तो यह खुद से कहती है, "शायद मैं जिस कार्यक्रम को आमंत्रित कर रहा हूं वह जानता है कि वाइल्डकार्ड को कैसे संभालना है," और इसलिए गुजरता है " ubuntuone-*" sudo apt-getएक शाब्दिक तर्क के रूप में।

यदि आपके पास अपनी वर्तमान कार्यशील निर्देशिका में एक फ़ाइल है ubuntuone-ffdjhjer, तो बैश निष्पादित करने का प्रयास करेगा sudo apt-get remove --purge ubuntuone-ffdjhjer, जो संभवतः विफल हो जाएगा।

में zsh(और में bash) आप इसे वाइल्डकार्ड विस्तार करने के लिए नहीं है, लेकिन के रूप में, उस पर पारित करने के लिए बताने के लिए एकल उद्धरण का उपयोग कर सकते हैं:

sudo apt-get remove --purge 'ubuntuone-*'

2
क्या मैं उस तरीके से बाश के रूप में बर्ताव कर सकता हूं?
मिरंडलोल

मुझे नहीं पता, लेकिन मैंने अभी तक जो थोड़ा बहुत शोध किया है, वह कोई सुझाव नहीं है। किसी भी मामले में, यह हमेशा बेहतर होता है (यहां तक ​​कि बैश में) एकल उद्धरणों में तर्कों को अतिक्रमण करने के लिए, यदि आप वाइल्डकार्ड का विस्तार करने के लिए शेल नहीं चाहते हैं, क्योंकि बैश में भी कमांड वह नहीं करेगा जो आप CWD में फाइल चाहते हैं। वाइल्डकार्ड से मेल खाता है। उदाहरण के लिए, मैं हमेशा dpkg -l 'linux*'सभी स्थापित गुठली देखने के लिए बैश में टाइप करता हूं ।
डेविड परड्यू

10

इस उत्तर में थोड़ी देर हो सकती है, लेकिन इसे ठीक करने का एक तरीका है। कमांड लाइन निष्पादित से:

unsetopt no_match

यह महान काम करता है
neaumusic

या shopt -s failglobमें bashकरने के लिए ठीक bash है, तो यह की तरह बर्ताव zshऔर अन्य आधुनिक गोले की तरह fishया tcsh कि तय कर दी है कि बॉर्न शैल जिससे एक आदेश अभी भी भले ही globs से मेल नहीं खाती चलाया जा सकता है की misfeature।
स्टीफन चेज़लस

@ स्टीफनचेज़लस योडा
ओपनकोडरएक्स

1

Zsh में विस्तार को रोकने के लिए एक और तरीका है, जिसे मैं उद्धरणों पर पसंद करता हूं:

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