লিনাক্সে টার্মিনাল থেকে ফাইল খুঁজে বের করার কিছু উপায় রয়েছে, এবং find, locate, which এবং whereis সেগুলোর মধ্যে কিছু সাধারণ কমান্ড। চলুন এই চারটি সার্চ কমান্ড, তাদের সাদৃশ্য এবং পার্থক্য দেখা যাক।
১. find
কোনো নির্দিষ্ট ডিরেক্টরির ভিতরে ফাইল খুঁজে বের করার সোজা পদ্ধতি হলো find কমান্ড ব্যবহার করা। যদি সার্চ করার ডিরেক্টরি এক্সপ্লিসিটলি স্পেসিফাই না করা হয়, তবে সার্চ করেন্ট ডিরেক্টরিতে করা হবে।
নিচের স্ক্রিনশটে দেখানো হয়েছে কীভাবে করেন্ট ডিরেক্টরি (.)-এ, .txt এক্সটেনশন দিয়ে শেষ হওয়া সকল ফাইলনেমের জন্য সার্চ করা হয়েছে।
সার্চ টাইমস্ট্যাম্প, ফাইল পারমিশন, ফাইল সাইজ, ফাইল টাইপ, ফাইল ওনার ইত্যাদি বেসিসেও করা যায়। রেগুলার এক্সপ্রেশন ব্যবহার করে সার্চ প্যারামিটার কন্ট্রোল করা যায়। find কমান্ডের আরও বিস্তারিত নির্দেশনা এখানে পাওয়া যায়।
২. locate
এই কমান্ডও নাম দিয়ে ফাইল খুঁজে বের করার আরেকটি উপায়। আগের কমান্ড নির্দিষ্ট ডিরেক্টরি সার্চ করে তারপর ইউজারকে রেজাল্ট দেয়। এই টুল "mlocate.db" নামের একটি ডেটাবেসের বিরুদ্ধে সার্চ করে, যা "/var/lib/mlocate/mlocate.db"-এ অবস্থিত। এই ডেটাবেস ক্রন ইউটিলিটি দিয়ে প্রতিটি সকাল আপডেট হয়।
কমান্ডটি find-এর চেয়ে দ্রুত এক্সিকিউট হয় কারণ সার্চ একটি এক্সিস্টিং ডেটাবেসের বিরুদ্ধে হয় যেটি ইতিমধ্যে সিস্টেমের সকল ফাইল এবং ডিরেক্টরির তালিকা কিউরেট করে রেখেছে।
locate ফাইলনেমের পর পর ঐ ফাইল যেখানে এক্সিস্ট করে সেটার অবসোলিউট পাথনেম প্রদর্শন করে।
ধরুন, হোম ডিরেক্টরিতে একটি স্ক্রিপ্ট তৈরি করা হয়েছে।
আমরা যদি নতুন তৈরি করা এবং কপি করা স্ক্রিপ্টটি "locate" করার চেষ্টা করি, তবে কোনো আউটপুট পাবো না।
locate myscript
যেহেতু ক্রন শুধু সকালে ডেটাবেস আপডেট করে, দিনের זמן সিস্টেমে যেকোনো ফাইল যোগ হলে, ডেটাবেসটি ম্যানুয়ালি আপডেট করতে হয়। এটি updatedb কমান্ড দিয়ে করা যায়।
sudo updatedb
আমরা যদি আবার কাস্টম স্ক্রিপ্টটি "locate" করার চেষ্টা করি, তবে এটা ফাইলটি লোকেট করতে পারবে।
৩. which
ফাইল সার্চ করার কমান্ডগুলো আলোচনা করার পর, আসুন একটা কমান্ডের দিকে যা সিস্টেমে এক্সিকিউটেবলসের অবসোলিউট পাথ খুঁজে বের করতে সাহায্য করে: which।
একটি এক্সিকিউটেবল/স্ক্রিপ্ট/বাইনারি সিস্টেমে একাধিক লোকেশনে থাকতে পারে। which $PATH এবং $MANPATH এনভায়রনমেন্ট ভেরিয়েবলে স্পেসিফাই করা ডিরেক্টরিগুলোতে নির্দিষ্ট এক্সিকিউটেবলের এক্সিস্টেন্স খুঁজে বের করে।
কোনো স্যুইচ ছাড়া, which একটি এক্সিকিউটেবলের জন্য প্রথম অবসোলিউট পাথ প্রদর্শন করে।
-a স্যুইচ নির্দিষ্ট এক্সিকিউটেবলের সকল ফাউন্ড অবসোলিউট পাথ প্রদর্শন করে।
একাধিক এক্সিকিউটেবলের অবসোলিউট পাথ একসাথে স্পেসিফাই করে খুঁজে বের করা যায়।
৪. whereis
whereis আরেকটি কমান্ড এবং এটি একটি এক্সিকিউটেবলের সম্পর্কে তিনটি টুকরো ইনফরমেশন পাওয়ার জন্য ব্যবহৃত হয়:
- বাইনারির অবসোলিউট পাথ
- সিস্টেমে সেই বাইনারির সোর্স কোড যেখানে এক্সিস্ট করে
- সেই বাইনারির জন্য যে ম্যানুয়াল এক্সিস্ট করে তার অবসোলিউট পাথ
"bzgrep"-এর জন্য, বাইনারি "/bin"-এ এক্সিস্ট করে, এবং ম্যানুয়াল "/usr/share/man/man1"-এ এক্সিস্ট করে। এর সোর্স কোড সিস্টেমে এক্সিস্ট করে না।
whereis-কে শুধু বাইনারির অবসোলিউট পাথ সার্চ করার জন্য -b স্যুইচ দিয়ে ইনস্ট্রাক্ট করা যায়। সার্চ শুধু -B স্যুইচের পর লিস্ট করা ডিরেক্টরিগুলোতে পারফর্ম করা যেতে পারে। -f এর পরের নামগুলো সকল বাইনারি স্পেসিফাই করে যেগুলোর ইনফরমেশন পেতে হবে।
সিমিলারলি, সার্চ শুধু সোর্স কোড বা শুধু ম্যানুয়ালস틸 রেস্ট্রিক্ট করা যায় -s এবং -m স্যুইচ দিয়ে। -S এবং -M ডিরেক্টরি নামের সাথে সোর্স কোড এবং ম্যানুয়ালের জন্য সার্চ ডিরেক্টরি স্পেসিফাই করে।
-l স্যুইচ whereis সার্চ করার জন্য ব্যবহৃত সকল ডিরেক্টরির অবসোলিউট পাথের একটি ডিটেইল্ড লিস্টিং প্রদান করবে।
উপসংহার
টার্মিনালে ফাইল খুঁজে বের করার টুলের অভাব নেই। আশা করি আপনার লিনাক্স সিস্টেমের চারটি উপকারী সার্চ টুল সম্পর্কে আপনার ভালো ধারণা হয়েছে। আপনি যদি তাদের ব্যবহার সম্পর্কে আরও ডিটেইলস দরকার হন, তবে আপনি তাদের ম্যানুয়াল পেজ চেক আউট করতে পারেন বিস্তারিত ডকুমেন্টেশনের জন্য।