Daffodil International University

Career Development Centre (CDC) => Career Guidance => Academia Lecture Series => Topic started by: sanzid.swe on March 03, 2020, 11:15:56 AM

Title: বাংলায় শেল স্ক্রিপ্টিং- পর্ব ৩ [টার্মিনালে সার্চ অপারেশন]
Post by: sanzid.swe on March 03, 2020, 11:15:56 AM
সার্চ অপারেশন বলতে আমরা দেখবো কিভাবে একটা ডিরেক্টরিতে থাকা ফাইলগুলো এবং ফাইলের মধ্যে টেক্সট ফাইলের মধ্যে আমাদের কাঙ্ক্ষিত অবজেক্ট আছে কিনা। টার্মিনালের মজা পেতে এগুলো শেখার কোন বিকল্প নাই, এতে টার্মনালের কাজ অনেক সহজ হয়ে যায় এবং অনেক এফিসিয়েন্ট হয়। আমরা টার্মিনালে বড় কোন স্ক্রিপ্ট লিখতে গেলে সার্চের প্রয়োজনীয়তা সম্পর্কে বুঝতে পারবো।

সার্সিং
ফিক্সড কোনকিছু দিয়ে শুরু
কোন ডিরেক্টরির সকল ফাইলগুলো টার্মিনালে দেখতে ls কমান্ড ইউজ করতে হয়, আগেই জেনেছি। কিন্তু যদি চাই, শুধুমাত্র ঐ সকল ফাইল দেখবো যাদের নামের প্রথম অক্ষর a দিয়ে শুরু, বাকীগুলো দেখবো না। তাহলে কি করতে হবে? হ্যা, এটাই হল এক ধরনের সার্স। এভাবে খুজে পেতে হলে কোন ডিরেক্টরিতে গিয়ে জাস্ট লিখতে ls a* এবং এন্টার চাপলেই ঐ ডিরেক্টরিতে থাকা a দিয়ে শুরু সকল ফাইল টার্মিনালে শো করবে। এখন মনে করি Documents ডিরেক্টরিতে আমাদের application, CV, python, Akash, wallpaper, waler নামে কিছু ফাইল/ ডিরেক্টরি আছে। আমরা খুজতে চাই wal দিয়ে শুরু অবজেক্টগুলো-

ls wal*
1
ls wal*
তাহলে টার্মিনালে wallpaper এবং waler নামের অবজেক্টদুটি শো করবে। এখানে * চিহ্ন দ্বারা বুঝানো হয় ০(শূন্য) ছাড়া বাকী যেকোনকিছু, অর্থাৎ wal এর পর ০(শূন্য) ছাড়া বাকী যেকোনকিছু থাকলেই সেটি শো করবে।

আবার আমরা যদি ls a? কমান্ড দেই তাহলে a এর পরে অন্য যেকোনকিছু যদি শুধু একটা থাকে, তাহলে সেগুলো শো করবে, অর্থাৎ ? দিয়ে সিঙ্গেল ক্যারেকটার বুঝায়।
একইভাবে যদি ls a?? কমান্ড দেই তাহলে a এর পরে অন্য যেকোনকিছু যদি শুধু দুইটা থাকে, তাহলে সেগুলো শো করবে, অর্থাৎ দুইটা ? দিয়ে দুইটা সিঙ্গেল ক্যারেকটার বুঝায়।
 

অনেকগুলোর মধ্যে যেকোন একটি দিয়ে শুরু
একইভাবে আবার মনে করি Documents ডিরেক্টরিতে আমাদের application, CV, python, Akash, wallpaper, waler নামে কিছু ফাইল/ ডিরেক্টরি আছে। আমরা খুজতে চাই যেগুলো শুধুমাত্র ছোটহাতের Vowel(a,e,i,o,u) এর যেকোন একটা দিয়ে শুরু, তাহলে ডিরেক্টরিতে গিয়ে লিখতে হবে-

ls [aeiou]*
1
ls [aeiou]*
তাহলে দেখতে পাবো শুধুমাত্র application ফাইলটি টার্মিনালে শো করছে।

এবার যদি আমরা এভাবে দেখতে চাই যে, প্রথম অক্ষর ছোটহাতের Consonant এবং পরের অক্ষর l,a,s এর যেকোন একটি দিয়ে শুরু। অর্থাৎ প্রথম দুইটা অক্ষরেরই কন্ডিশন দিয়ে দিবো, তাহলে লিখতে হবে-

ls [!aeiou][las]*
1
ls [!aeiou][las]*
তাহলে এখান থেকে wallpaper এবং waler অবজেক্টটি টার্মিনাল শো করবে।

 

টেক্সট ফাইলের মধ্যে কোনকিছু খোঁজা
মনে করি application ফাইলটার মধ্যে আমাদের ডিপার্টমেন্ট হেড স্যার এর কাছে একটা দরখাস্ত লেখা আছে, সেখানে অবশ্যই sir কথাটি থাকবেই। আমরা এবার সেই লাইনগুলো খুজে বের করবো। ডিরেক্টরিতে গিয়ে লিখতে হবে grep fileName keyword এবং আমাদের ফাইলের জন্য আমরা লিখবো-

grep "sir" application
1
grep "sir" application
ফলে আমরা যে ফলাফলটি পাবো তা হয়তো-

echo "sir, I'm a regular student of your university"
echo "I remain sir"
1
2
echo "sir, I'm a regular student of your university"
echo "I remain sir"
এরকম দুইটি লাইন পাবো যার মধ্যে sir শব্দটি রয়েছে। আরও বেশিও থাকলে টার্মিনালে সবগুলো শো করবে…

আমার ব্লগের মূল লেখা- https://bit.ly/2wnzDhv