কারণ
শেলটি তারকাচিহ্নের মতো কোনও গ্লোব অক্ষর (ওয়াইল্ডকার্ড) ব্যাখ্যা করে এবং প্রসারিত করে। কমান্ডটির এই ব্যাখ্যাটি বর্তমান শেলটিতে ঘটে ( sudoকমান্ড কার্যকর হওয়ার আগে ) যার ডিরেক্টরিটি পড়ার অনুমতি নেই। যেহেতু বর্তমান শেল ফাইল উল্লিখিত glob প্যাটার্ন মেলে না খুঁজে পেতে পারেন, পথনাম সম্প্রসারণ আউট বাহিত হয় না এবং শেল পাসের rm, -fএবং /var/log/nginx/ab*(ক আক্ষরিক তারকা) এর আর্গুমেন্ট হিসাবে sudoকমান্ড।
sudoকমান্ড, ঘুরে, আরম্ভ করা rmকমান্ড যার একটি পাথ সহ একটি ফাইল মুছে ফেলার জন্য চেষ্টা করে /var/log/nginx/ab*(একটি তারকা একটি ইউনিক্স ফাইলের নাম জন্য একটি আইনি চরিত্র)। যেহেতু এই জাতীয় ফাইলটি আসলে উপস্থিত নেই তাই এটি তার ব্যর্থতার কথা জানায়। জিএনইউ সহ rmএই ত্রুটি বার্তাটি সুস্পষ্ট; পূর্ণ নিচে ত্রুটি বার্তা নির্দেশ করে যে সরানো হচ্ছে (একক) ফাইল উপস্থিত না থাকলে:
rm: cannot remove `/var/log/nginx/ab*': No such file or directory
সমাধান
সমাধানটি ফাইল-নাম সম্প্রসারণের জন্য প্রয়োজনীয় অনুমতি সহ একটি নতুন শেল সুপার्युসার হিসাবে চালু করতে হবে:
sudo bash -c "rm -f /var/log/nginx/ab*"
উপরের কমান্ডটি একটি নতুন শেল শুরু করে যা মূল হিসাবে -cচালিত হয় এবং শেলটি দ্বারা চালিত কমান্ডটি পাস করার জন্য বিকল্পটি ব্যবহৃত হয়। যেহেতু কমান্ডটি উদ্ধৃত হয়েছে, বর্তমানের শেল দ্বারা তারকাচিহ্ন ব্যাখ্যা করা যায় না এবং এটি নতুন রুট শেলের মতো হ'ল rmকমান্ডটি প্রবর্তন করার আগে পথের নামগুলি প্রসারিত করতে দেয় ।
findকমান্ডটি একটি ভাল উত্তর হওয়ায় আমি এটিকে উত্সাহিত করেছি । যাইহোক,--প্রথম কর্মসূচিতে বিকল্পগুলির শেষটি চিহ্নিত করা হয়েছে (ফাইলের নামগুলি যদি একটি দিয়ে শুরু হয়-তবে এটি কার্যকর) তবে এটি ব্যবহারকারীর নিজস্ব শেলটি গ্লোব প্যাটার্নটি প্রসারিত করার চেষ্টা করে (আমার উত্তরে বর্ণিত হিসাবে) সমস্যার সাথে সহায়তা করে না।