পরিবর্তে আপনি এটি কী করতে চান? মোটেও চালাচ্ছেন না 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যখন গ্লোব মেলে না তখন ফোন করা ভুল। sh1 আচরণ ভুল। এটি যেমন ধরণের জন্য নিরীহ *, তবে একটির মতো *.[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)fishset
set files *
if count $files > /dev/null
rm -f -- $files
end
দেখুন কেন nullglob ডিফল্ট নয় আরো বিস্তারিত জানার জন্য।
ঘ । কঠোরভাবে বলতে গেলে এটি কেবল shবোর্ন শেল থেকে (1979 সালে ইউনিক্স ভি 7); এর আগের ভার্সন sh(যা কল করেনি /etc/globunquoted ওয়াইল্ডকার্ড উপর যা যেখানে উল্লিখিত glob নাম থেকে আসে) মত আচরণ করেনি cshবা zsh -o cshnullglobহলো, /etc/globকমান্ড বাতিল করবে globs কেউই কোনো ম্যাচ ছিল (এবং নন-ম্যাচিং globs অন্তত যদি দমন হবে তাদের মধ্যে কোনও ম্যাচ ছিল)। আচরণ ছিল ভাঙ্গা বোর্ন শেল দ্বারা।