আমি বাশ শিখছি, এবং আমি অন্য "ফাঁকা" অক্ষরগুলির সাথে স্থানের অক্ষরগুলি প্রতিস্থাপন করতে চাই। আমি একটি forলুপ ব্যবহার করছি :
for f in *\ *; do mv "$f" "${f// /_}"; done
আমার প্রশ্ন, ডাবল স্ল্যাশ এবং স্পেসটি কেন ${f// /_}? কি করে ${f// /_}?
আমি বাশ শিখছি, এবং আমি অন্য "ফাঁকা" অক্ষরগুলির সাথে স্থানের অক্ষরগুলি প্রতিস্থাপন করতে চাই। আমি একটি forলুপ ব্যবহার করছি :
for f in *\ *; do mv "$f" "${f// /_}"; done
আমার প্রশ্ন, ডাবল স্ল্যাশ এবং স্পেসটি কেন ${f// /_}? কি করে ${f// /_}?
উত্তর:
bashপ্যারামিটার সম্প্রসারণ ব্যবহার করে প্রতিস্থাপনের ধরণটি চালিত করে ।
ইন ${f// /_}:
ডাবল স্ল্যাশগুলি //স্থানের সমস্ত ঘটনাগুলি প্রতিস্থাপনের জন্য _, যদি আপনি একটি স্ল্যাশ রাখেন তবে /কেবল প্রথম স্থানটি প্রতিস্থাপন করা হবে
স্থানটি সেখানে কারণ আপনি স্থান প্রতিস্থাপন করছেন (আন্ডারস্কোর সহ)
সুতরাং নিদর্শনটি হ'ল:
${parameter//find/replace}
man bashআরও ধারণা পেতে চেক করুন ।
একবারে Parameter Expansionবিভাগে পেতে man bash:
LESS=+/'Parameter Expansion' man bash
বিভাগটির "{f// /_}অর্থ প্রতিটি স্থানকে আন্ডারস্কোর দিয়ে প্রতিস্থাপন করা উচিত। এটি ব্যাশ প্যারামিটার সম্প্রসারণটি ব্যবহার করছে , শেল প্রসারণের প্রতিটি ম্যাচ (গ্লোববিং) এর জন্য fসংজ্ঞায়িত পরিবর্তনশীলটি for f in *\ *;চলবে run প্রতিবার পাওয়া ফাইলের নামটি হয়ে উঠবে মান $f।
প্যারামিটার বিস্তৃতি //নিম্নলিখিত বর্ণের প্রতিটি ঘটনার অর্থ নিয়ে কাজ করে //(এই উদাহরণে স্থান), এর পরে অক্ষর দ্বারা প্রতিস্থাপন করা উচিত /(এই উদাহরণে আন্ডারস্কোর)।