কয়েকটি ফাইল দিয়ে জিনিসগুলি করার একটি সাধারণ উপায় হ'ল is এবং এর জন্য আমাকে আঘাত করবেন না:
for f in $(ls); do …
এখন, স্পেস বা অন্যান্য অদ্ভুত অক্ষরযুক্ত ফাইলগুলির বিরুদ্ধে সুরক্ষিত থাকার জন্য একটি সহজ উপায় হ'ল:
find . -type f -print0 | while IFS= read -r -d '' file; …
এখানে -d ''যেমন ASCII NUL সেট করার জন্য সংক্ষিপ্ত রয়েছে -d $'\0'।
তবে কেন এমন হয়? কেন ''এবং $'\0'একই? এটি কি খালি স্ট্রিং সহ বাশের সি শিকড়গুলির কারণে সর্বদা নাল-সমাপ্ত হয়?
for f in *পার্সিংয়ের পরিবর্তে ব্যবহার করুন ls।
for i in $(ls)ভয়াবহ বোকা — আমি প্রায় লজ্জিত আমি এটিকে এখানে খারাপ উদাহরণ হিসাবে ব্যবহার করেছি।
find … -execফাইলগুলির চারপাশে লুপিংয়ের পরিবর্তে ব্যবহার করে, যা বেশিরভাগ ক্ষেত্রে কাজ করে যেখানে আপনি পরিবর্তে লুপ ব্যবহার করতে চান use এখানে, findআপনার জন্য সমস্ত কিছুর যত্ন নেয়।