পরিবর্তে আপনি এটি কী করতে চান? মোটেও চালাচ্ছেন না rm
(1)? *
অন্যান্য বোর্নের মতো শেলসের মতো আক্ষরিক যুক্তি দিয়ে এটি চালান (2)? এটিকে বিনা যুক্তি দিয়ে চালাবেন (3)?
files=(*(N)); (($#files)) && rm -- $files
। অথবা (rm -- *) 2> /dev/null
তবে এটি সত্যিকারের ত্রুটিগুলিও লুকিয়ে rm
রাখবে যার দ্বারা নির্বোধ হবে। আপনি zsh
ত্রুটিটি বাতিল করতে পারেন তবে স্ট্যান্ডার rm
কমান্ডের সাথে থাকলেও পুনরুদ্ধার করতে পারেন with(rm -- * 2>&3 3>&-) 3>&2 2> /dev/null
emulate sh -c 'rm -- *' 2> /dev/null
। তারপর মত sh
যা zsh
এখন যে একক কমান্ড-লাইনে emulated, অ-ম্যাচিং *
হিসেবে হল পাস করা হয়েছে rm
এবং rm
অভিযোগ হিসাবে *
ফাইল বিদ্যমান নেই। আমরা দমন rm
এর দ্বারা stderr হিসাবে আপনি কাজ কী হবে sh
দমন করতে যে ত্রুটির বার্তা, কিন্তু আবার, যে নিরীহ যেমন দ্বারা প্রকৃত ত্রুটি আড়াল হবে rm
হিসেবে অশোভন আচরণ যথাযোগ্য ত্রুটির বিরোধিতা sh
একটি আক্ষরিক ক্ষণস্থায়ী *
করতে rm
। যদিও rm -f '*'
কোনও অ-বিদ্যমান *
ফাইল সম্পর্কে অভিযোগ করবে না , তাই আপনি করতে পারেনemulate sh -c 'rm -f -- *'
rm -- *(N)
। rm
যদিও যখন কোনো আর্গুমেন্ট পাস না নালিশ জানাব, যদিও আবার, না rm -f
: rm -f -- *(N)
।
সাধারণত, rm -f
আপনি যে সমস্ত আদেশ ব্যবহার করতে চান তা যদি আপনি সমস্ত ফাইল চলে যেতে চান এবং কেবল ফাইলগুলি অপসারণ করা যায়নি বা আইওডাব্লু rm
ফিরে আসার পরে রয়েছে তবেই একটি ত্রুটি পাবেন । -f
কিছু পরিস্থিতিতে ব্যবহারকারীকে অনুরোধ করা থেকে বাঁচতে আপনি সাধারণত স্ক্রিপ্টগুলিতে ব্যবহার করতে চান ।
এখানে, rm
যখন গ্লোব মেলে না তখন ফোন করা ভুল। sh
1 আচরণ ভুল। এটি যেমন ধরণের জন্য নিরীহ *
, তবে একটির মতো *.[ch]
, *.[ch]
যখন এটি মেলে না তেমনিভাবে পাস *.[ch]
করার ফলে ফাইলটি ভুল করে মুছে ফেলা হতে পারে:
$ ls
*.[ch] foo.txt
$ zsh -c 'rm *.[ch]'
zsh:1: no matches found: *.[ch]
$ ls
*.[ch] foo.txt
$ sh -c 'rm *.[ch]'
$ ls
foo.txt
একটি ত্রুটি সঙ্গে ব্যর্থ করতে সবচেয়ে যুক্তিসম্মত জিনিস এবং কি zsh
(এবং fish
, csh
, tcsh
, bash -o failglob
এবং মূল ইউনিক্স শেল) আছে।
এবং যদি আপনি সেই বিশেষ ক্ষেত্রে নিজেকে যত্ন নিতে চান তবে উপরের ক্ষেত্রে (1) এর মতো এর গ্লোব কোয়ালিফায়ার ( নোগ্লোব জন্য ) zsh
দিয়ে এটি সহজ করে তোলে । (কমপক্ষে সাম্প্রতিক সংস্করণে ) এটি আরও সহজ করে তোলে কারণ এটি কমান্ডের জন্য অন্তর্ভুক্ত নোগলব করে । সুতরাং, সমতুল্য হ'ল:(N)
fish
set
set files *
if count $files > /dev/null
rm -f -- $files
end
দেখুন কেন nullglob ডিফল্ট নয় আরো বিস্তারিত জানার জন্য।
ঘ । কঠোরভাবে বলতে গেলে এটি কেবল sh
বোর্ন শেল থেকে (1979 সালে ইউনিক্স ভি 7); এর আগের ভার্সন sh
(যা কল করেনি /etc/glob
unquoted ওয়াইল্ডকার্ড উপর যা যেখানে উল্লিখিত glob নাম থেকে আসে) মত আচরণ করেনি csh
বা zsh -o cshnullglob
হলো, /etc/glob
কমান্ড বাতিল করবে globs কেউই কোনো ম্যাচ ছিল (এবং নন-ম্যাচিং globs অন্তত যদি দমন হবে তাদের মধ্যে কোনও ম্যাচ ছিল)। আচরণ ছিল ভাঙ্গা বোর্ন শেল দ্বারা।