এই টিউটোরিয়ালে ব্যাখ্যা করা হয়েছে কিভাবে সিমলিংক (Symbolic Links), যাকে "Soft Links"-ও বলা হয়, লিনাক্সে ln কমান্ড ব্যবহার করে তৈরি করবেন।
আপনি যদি উইন্ডোজ অপারেটিং সিস্টেম ব্যবহার করার ব্যাকগ্রাউন্ড থেকে আসেন, আপনি শর্টকাট-এর কনসেপ্ট জানেন - যেসব ফাইল কোনো রিয়েল ডেটা না রাখে বরং আসল ফাইল বা ফোল্ডারের লিঙ্ক রাখে যেটি আপনি এক্সেস করতে চান।
এগুলো শুধু সুবিধার জন্য থাকতে পারে (নেস্টেড ফোল্ডার ক্লিক করিয়ে যেতে সময় বাঁচাতে) বা আউটপুট রিডাইরেক্ট করার জন্য (আপনার একটি প্রোগ্রামের হার্ডকোডেড ডিরেক্টরি আছে যেখানে আউটপুট ফাইল দেয়, আপনি সেগুলো কোথাও অন্য স্থানে পাঠাতে চান)।
লিনাক্সে Soft Links (Symlinks) মূলত একই উদ্দেশ্যে কাজ করে।
Hard Links vs. Soft Links
- Soft Links ( còn Symbolic Links or Symlinks হিসেবে জানা) অন্য একটি ফাইল বা ফোল্ডারের লোকেশন রেফার করে ফাইলসিস্টেমে।
- তাই যদি সফট লিঙ্ক করা ফাইলটি ডিলিট হয়, সফট লিঙ্ক অর্থহীন হয়ে যায় কারণ এটি একটি অস্তিত্বহীন ফাইলকে পয়েন্ট করে।
- যেহেতু সফট লিঙ্ক শুধু লিঙ্ক করা ফাইল লোকেশনের রেফারেন্স, সেগুলো ভিন্ন ফাইলসিস্টেমেও এক্সিস্ট করতে পারে।
- লিঙ্ক এবং লিঙ্কড ফাইলের মাঝে পারমিশন শেয়ার করা হয় না।
- Hard links হলো লিঙ্ক করা ফাইলটির মিরর কপি - দুটি কপি স্টোরেজ ডিভাইসে একই ডেটাকে রেফার করে।
-
- তাই হার্ড-লিঙ্ক করা ফাইল ডিলিট করলে ডেটা রিমুভ হয় না - অন্য "Hard Link" ডেটায় এখনও ফাইল হিসেবে ফাইলসিস্টেমে এক্সিস্ট করবে।
- ফাইল সিস্টেম ট্র্যাক রাখে কতগুলো রেফারেন্স আছে ডিস্কে ফাইলের। যখন সব হার্ড লিঙ্ক ডিলিট হয়, কাউন্ট হবে ০ (শূন্য)। কাউন্ট শূন্যে পৌঁছালে ফাইল ডিলিট হয় এবং ডেটা স্পেস ডি-অ্যালোকেট হয় যাতে অন্যান্য ফাইল স্ট্রোর করা যায়।
- যেহেতু সেগুলো একই ডেটার দুটি রেফারেন্স, সেগুলো একই ফাইলসিস্টেমে থাকতে হবে।
- পারমিশন শেয়ার করা হয় - লিঙ্কড এবং লিঙ্কড ডিস্কে একই ফাইল যেটি দুটি জায়গা থেকে রেফারেন্সড হচ্ছে।
- তাই হার্ড-লিঙ্ক করা ফাইল ডিলিট করলে ডেটা রিমুভ হয় না - অন্য "Hard Link" ডেটায় এখনও ফাইল হিসেবে ফাইলসিস্টেমে এক্সিস্ট করবে।
-
সিনট্যাক্স
ln [OPTIONS] SOURCE_PATH LINK_PATH
নোট করুন:
- ফাইল এবং ফোল্ডার দুটোই SOURCE_PATH হিসেবে ব্যবহার করা যায়
- সফট লিঙ্ক LINK_PATH-এ তৈরি হবে
অপশন
ln কমান্ডে নিচের অপশনগুলো পাস করা যায়:
| -F | প্রপোজড লিঙ্ক (link_name) যদি ইতিমধ্যে এক্সিস্ট করে এবং ডিরেক্টরি হয়, তবে সেটা রিমুভ করুন যাতে লিঙ্ক হতে পারে। -F অপশন -f বা -i অপশনসহ ব্যবহার করা উচিত। কোনোটি না স্পেসিফাই থাকলে -f ইমপ্লাইড। -F অপশন নো-অপ যদি -s অপশন স্পেসিফাইড না থাকে। |
| -h | যদি link_name বা link_dirname সিম্বলিক লিঙ্ক হয়, সেটা ফলো করবেন না। এটি -f অপশনসহ সবচেয়ে উপযোগী, একটি সিমলিংক রিপ্লেস করার জন্য যা ডিরেক্টরিকে পয়েন্ট করতে পারে। |
| -f | প্রপোজড লিঙ্ক (link_name) যদি ইতিমধ্যে এক্সিস্ট করে, তবে সেটা আনলিঙ্ক করুন যাতে লিঙ্ক হতে পারে। (-f অপশন কোনো পূর্ববর্তী -i অপশন ওভাররাইড করে।) |
| -i | প্রপোজড লিঙ্ক এক্সিস্ট করলে ln স্ট্যান্ডার্ড এররে প্রম্পট লিখে। স্ট্যান্ডার্ড ইনপুট থেকে রেসপন্স y বা Y দিয়ে শুরু হলে, প্রপোজড লিঙ্ক আনলিঙ্ক করুন যাতে লিঙ্ক হতে পারে। অন্যথায়, লিঙ্ক অটেম্পট করবেন না। (-i অপশন কোনো পূর্ববর্তী -f অপশন ওভাররাইড করে।) |
| -n | -h-এর মতো, অন্যান্য ln ইমপ্লিমেন্টেশনের সাথে কম্প্যাটিবিলিটির জন্য। |
| -s | সিম্বলিক লিঙ্ক তৈরি করুন। |
| -v | ln কে ভার্বোস করুন, প্রসেস হওয়া ফাইলগুলো দেখান। |
এই অপশনগুলো এবং ls কমান্ডের ফুল ডিটেইলস ইউজার ম্যানুয়ালে পাওয়া যাবে:
man ls
উদাহরণ
একটি সিম্পল সিম্বলিক লিঙ্ক (symlink সংক্ষেপে) তৈরি ডেমো করার জন্য, একটি ফাইল তৈরি করুন:
touch test_file.txt
তারপর এটার একটি সফট লিঙ্ক তৈরি করুন:
ln -s test_file.txt link_to_test_file
লিঙ্ক ভেরিফাই করতে চালান:
ls -l
যে কিছু এই আকারে আউটপুট করবে:
-rw-r--r-- 1 user staff 0 2 Jan 01:31 test_file.txt lrwxr-xr-x 1 user staff 9 2 Jan 01:32 link_to_test_file -> test_file.txt
নোট করুন:
- প্রথম কলামের লেটারগুলো ফাইল/ফোল্ডার টাইপ এবং পারমিশন রিপ্রেজেন্ট করে
- পরের নাম্বার হলো কন্টেইন করা ফাইলের সংখ্যা
- user/staff হলো ফাইল/ফোল্ডারের সাথে পারমিশন থাকা ইউজার/গ্রুপ
- তারপর ফাইল সাইজ, মডিফিকেশন ডেট, এবং নাম
- শুরুতে l দেখছেন? এর মানে এটি একটি লিঙ্ক
- অতিরিক্তভাবে, শেষে -> বিট দেখাচ্ছে যে ফাইলটি test_file.txt-র সাথে লিঙ্কড
- Sো, এটা নিশ্চিতভাবেই একটি লিঙ্ক
উপসংহার
আমি অধিকাংশ সিস্টেমে লগইন করলে সরাসরি ইউজারের হোম ডিরেক্টরিতে পাঠিয়া দেওয়া হয়। সে দিন যে ডিরেক্টরিতে কাজ করতে চাই (যেমন একটি ওয়েব অ্যাপ ডিপ্লয় করার ফাইল হোস্ট করার ডিরেক্টরি), পথ টাইপ করতে না চাইলে, প্রথম কাজই সেটার একটি সফট লিঙ্ক বানাতে হয় যাতে প্রতিবার ফুল পথ টাইপ করতে না হয়।
তাই, এটি খুব উপযোগী।
লিনাক্সে নতুন? কোড শিখে সরাসরি কাজে লাগান!