উত্তর:
নিয়মিত এক্সপ্রেশন এবং ফাইলের নাম গ্লোববিং দুটি খুব আলাদা জিনিস।
পাঠ্যের সাথে প্যাটার্ন মিলের জন্য নিয়মিত এক্সপ্রেশন কমান্ড / ফাংশনে ব্যবহৃত হয়। উদাহরণস্বরূপ grep
, প্রোগ্রামিং ভাষার প্যারামিটারে বা।
ফাইলের নাম গ্লোববিং শেল দ্বারা ফাইল এবং ডিরেক্টরিগুলির নামের সাথে ওয়াইল্ডকার্ড ব্যবহার করে ব্যবহৃত হয়। গ্লোব্বিংয়ের ক্ষমতা শেলের উপর নির্ভর করে। উদাহরণস্বরূপ, বাশ ওয়াইল্ডকার্ডগুলিকে সমর্থন করে:
*
0 বা ততোধিক অক্ষর মেলে?
মিল 1 অক্ষর[...]
নির্দিষ্ট সেট একটি অক্ষর মেলেএই ওয়াইল্ডকার্ডগুলি নিয়মিত অভিব্যক্তির অনুরূপ দেখতে পারে, [...]
গ্লোব্বিং এবং রেজেক্সে প্রকৃত একই অর্থ রয়েছে। কিন্তু *
এবং ?
গ্লোব্বিং এবং রেজেক্সে বিভিন্ন জিনিস বোঝাতে।
একটি মন্তব্যে আপনি লিখেছেন:
তবে দোভাষীর পার্থক্য কীভাবে * এটি জোকার বা রেইজেক্স কিনা? উদাহরণস্বরূপ:
grep a*b a*.txt
?
সহজ। প্রকার, রকম.
প্রথমত, শেলটি ফাইলের সাথে মিল রেখে ওয়াইল্ডকার্ডগুলি ব্যাখ্যা করার চেষ্টা করে। যদি "এ" দিয়ে শুরু করে "বি" দিয়ে শেষ হয় এমন ফাইলগুলি রয়েছে, শেলটি a*b
মিলে যাওয়া ফাইলের নামের সাথে প্রতিস্থাপন করবে । একই জন্য যায় a*.txt
। যদি কোনও মিলে যাওয়া ফাইলের নাম না থাকে, শেলটি আর্গুমেন্টগুলি grep
যেমনটি ছিল তেমনভাবে অক্ষরে পাঠিয়ে দেবে।
তবে এর প্রথম প্যারামিটারটি grep
একটি প্যাটার্ন হওয়া উচিত। ব্যবহারিক ব্যবহারের 99.999% ক্ষেত্রে আপনি প্রথম পরামিতিটি শেল দ্বারা ব্যাখ্যা করতে চান না। সম্ভবত সম্ভবত উদ্দেশ্যটি ছিল:
grep "a*b" a*.txt
উদ্ধৃত করার জন্য ধন্যবাদ a*b
, শেলটি গ্লোববিং ব্যবহার করে এটি ব্যাখ্যা করবে না, এবং এর পরিবর্তে সরাসরি এটিকে দেবে grep
। পরিবর্তে, grep
এটি নিয়মিত প্রকাশ হিসাবে (ডিজাইনের মাধ্যমে) ব্যাখ্যা করবে।
এটির সংক্ষিপ্তসার হিসাবে, শেলটি কমান্ড লাইনটির নিজস্ব গ্লোব্বিং ভাষা অনুসরণ করে যা ওয়াইল্ডকার্ড ব্যবহার করছে তা ব্যাখ্যা করে। কমান্ডস, প্রোগ্রামগুলি তাদের পরামিতিগুলি তাদের লেখকরা যেভাবে ডিজাইন করেছিলেন সেভাবে ব্যাখ্যা করে।
যদি কোনও ফাইলনাম আপনার জন্য স্ট্রিং হয় তবে আপনি ফাইলের নামগুলির জন্যও রেজিেক্স ব্যবহার করতে পারেন। উদাহরণস্বরূপ: আপনি যদি একটি রেজেক্সের সাথে মেলে ফাইলের নামগুলি খুঁজতে চান তবে আপনি চেষ্টা করতে পারেন:
find ./ -regex '.*[abc][xyz].*'
কমান্ডটি এমন ফাইলগুলির সন্ধান করবে যেগুলির নামে x, y বা z এর পরে a, b বা c রয়েছে। এটি কেবল একটি উদাহরণ। অন্তহীন সম্ভাবনাময় আছে।
find ./ -name 'a*'
* ওয়াইল্ডকার্ড হিসাবে ব্যবহার করুন। আপনি টাইপ করার সময় find ./ -regex 'a*'
, আপনি একটি রেজিজেমে * ব্যবহার করেন। গুরুত্বপূর্ণ পার্থক্যটি হ'ল সুইচ -name
বা -regex
।