জেডএসএইচ সহ অ্যাপট-গেট * ওয়াইল্ডকার্ড


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
আমি কি zsh কে সেই পদ্ধতিতে বাশের মতো আচরণ করতে পারি?
মিরান্ডালল

আমি জানি না, তবে এখন পর্যন্ত যে সামান্য গবেষণা করেছি তা হ'ল না। যাইহোক, শেলটি ওয়াইল্ডকার্ডগুলি প্রসারিত করতে না চাইলে একক উদ্ধৃতিতে আর্গুমেন্টগুলি আবদ্ধ করা সর্বদা ভাল (এমনকি ব্যাশেও) ভাল, কারণ ব্যাশ এমনকি সি-ডাব্লুডিতে কোনও ফাইল চাইলে কমান্ডটি যা চায় তা করবে না won't ওয়াইল্ডকার্ডের সাথে মেলে। উদাহরণস্বরূপ, dpkg -l 'linux*'সমস্ত ইনস্টল করা কার্নেলগুলি দেখতে আমি সবসময় ব্যাশে টাইপ করি ।
ডেভিড পার্ডু

10

এই উত্তরটি হতে একটু দেরি হতে পারে তবে এটি ঠিক করার একটি উপায় আছে। কমান্ড লাইন থেকে সম্পাদন:

unsetopt no_match

এটি দুর্দান্ত কাজ করে
নিওমজিক

অথবা shopt -s failglobমধ্যে bashথেকে ফিক্স bash তাই এটি মত আচরণ zshএবং অন্যান্য আধুনিক শাঁস পছন্দ fishবা tcsh যা ঠিক করেছি যে বোর্ন শেল যেখানে কমান্ড এখনও এমনকি যদি globs মেলেনি চালানোর করা যেতে পারে misfeature।
স্টাফেন চেজেলাস 25:58

@ স্টাফেনচাজেলাস যোদা
ওপেন কোডারএক্স

1

Zsh এর প্রসারণ রোধ করার আরও একটি উপায় রয়েছে, যা আমি কোটের চেয়ে বেশি পছন্দ করি:

sudo apt-get remove --purge ubuntuone-\*
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.