মূলঃ Symlink Tutorial in Linux – How to Create and Remove a Symbolic Link, লেখকঃ Dillion Megida

লিনাক্সে symlink (একে symbolic link ও বলা হয়) হল এক ধরণের ফাইল যা আপনার কম্পিউটারের অন্য আরেকটি ফাইল বা ফোল্ডারের দিকে নির্দেশ করে। লিনাক্সের symlink অনেকটাই উইন্ডোজের এর shortcut এর মত।

অনেকেই symlink কে "soft link" বলে থাকেন।  "hard link" হল লিনাক্স/ইউনিক্স এর আরেক ধরণের লিংক।

Soft Link হল শর্টকাটের মত। এগুলি যে কোন ফাইলসিস্টেমে থাকা আরেকি ফাইল বা ডাইরেক্টরিকে নির্দেশ করতে পারে।

Hard Link ও ফাইল এবং ফোল্ডারের জন্য শর্টকাটের মত তবে ভিন্ন ফাইল সিস্টেমে থাকা কোন ফোল্ডার বা ফাইলের hard link তৈরি করা যায় না।

চলুন দেখা যাক কিভাবে একটি symlink তৈরি এবং ডিলিট করা যায়। আমরা আরও জানবো, broken link কি এবং কিভাবে এগুলিকে ডিলিট করা যায়।

একি symlink তৈরি করার জন্য নিম্নোক্ত কমান্ড সিনট্যাক্সটি ব্যবহার করতে হবেঃ

ln -s <path to the file/folder to be linked> <the path of the link to be created>

ln হল link কমান্ড। -s দ্বারা বুঝানো হচ্ছে যে লিংকটি একটি soft link হবে। -s এর পরিবর্তে -symbolic ও ব্যবহার করা যেতে পারে।

ln কমান্ড বাই ডিফল্ট hard link তৈরি করে। -s এর পরের আর্গুমেন্ট হল  path to the file (or folder) যেটিকে আপনি এই লিংক দ্বারা নির্দেশ করতে চান।

কমান্ডের সর্বশেষ আর্গুমেন্টটি হল path to link অর্থাৎ লিংকটি যেখানে থাকবে তার অ্যাড্রেস।

ln -s /home/james/transactions.txt trans.txt

এই কমান্ডটি চালানোর পরে আপনি /home/james/transactions.txt ফাইলটিকে trans.txt লিংক এর মাধ্যমে অ্যাক্সেস করতে পারবেন। trans.txt ফাইলে করা যে কোন পরিবর্তন অরিজিনাল ফাইলেও পরিলক্ষিত হবে।

উল্লেখ্য, উপরোক্ত কমান্ডটি trans.txt লিংক ফাইলটি আপনার কারেন্ট ডাইরেক্টরিতে তৈরি করবে। আপনি চাইলে নিম্নোক্ত উপায়ে লিংক ফাইলটি অন্য কোন ফোল্ডারেও তৈরি করতে পারেনঃ

ln -s /home/james/transactions.txt my-stuffs/trans.txt

আপনার কারেন্ট ডিয়ারেক্টরিতে "my-stuffs" ডাইরেক্টরিটি আগে থেকেই তৈরি করা থাকতে হবে, নতুবা কমান্ডটি একটি এরর থ্রো করবে।

এই কাজের জন্য উপরের কমান্ডের মতই আমরা ব্যবহার করবঃ

ln -s /home/james james

এই কমান্ডটি james নামে একটি লিঙ্কড ফোল্ডার তৈরি করবে যা /home/james এর অনুরূপ হবে। এই লিঙ্কড ফোল্ডারে যে কোন পরিবর্তন করলে তা অরিজিনাল ফোল্ডারেও পরিলক্ষিত হবে।

যে কোন symlink ডিলিট করার আগে, নিশ্চিত হয়ে নিন যে সেই ফাইল বা ফোল্ডারটি আসলেই একটি symlink, অন্যথায় আপনি আপনার জরুরি ফাইল বা ফোল্ডার হারিয়ে ফেলতে পারেন।

কোন একটি ফাইল বা ফোল্ডার symlink কি না তা নিশ্চিত হতে আপনি নিম্নোক্ত কমান্ডটি ব্যবহার করতে পারেনঃ

ls -l <path-to-assumed-symlink>

আপনার টার্মিনালে এই কমান্ডটি চালানো হলে আপনি ফাইলটির প্রোপার্টিজ দেখতে পারবেন। সেখানে প্রথম অক্ষরটি যদি একটি ছোট হাতের L ('l') হয়, তার মানে ফাইল বা ফোল্ডারটি একটি symlink।

শেষের দিকে আপনি একটি অ্যারো (->) দেখবেন যা লিংকটির অরিজিনাল ফাইল বা ফোল্ডারটিকে নির্দেশ করবে।

একটি symlink ডিলিট করার দুটি পদ্ধতি আছেঃ

unlink ব্যবহার করে কোন symlink ডিলিট করার জন্য নিম্নোক্ত কমান্ড সিনট্যাক্সটি ব্যবহার করতে হবেঃ

unlink <path-to-symlink>

প্রসেসটি সফল হলে এই কমান্ডটি symlink টি ডিলিট করে ফেলবে।

আপনার symlink টি যদি কোন ফোল্ডারকে নির্দেশ করে তবুও আপনি তার নামের শেষে '/' যুক্ত করবেন না। তাহলে লিনাক্স এটিকে একটি ডাইরেক্টরি হিসেবে ধরে নিবে এবং unlink কমান্ড ডাইরেক্টরি ডিলিট করতে পারে না।

যেমনটা আমরা দেখেছি, একটি symlink হল একটি ফাইল যা অন্য আরেকটি ফাইল বা ফোল্ডারকে নির্দেশ করে। লিঙ্কড ফাইলটি ডিলিট করার মাধ্যমেও অরিজিনাল ফাইল বা ফোল্ডার এবং তার symlink এর মধ্যে সংযোগ ভেঙ্গে ফেলা যায়।

এর কমান্ড সিনট্যাক্সটি নিম্নরূপঃ

rm <path-to-symlink>

উদাহরণস্বরূপঃ

rm trans.txt
rm james

উল্লেখ্য, rm james/ কমান্ডটি চালানোর চেষ্টা করলে একটি এরর দেখা দেবে, কারণ লিনাক্স 'james/' কে একটি ডাইরেক্টরি হিসেবে দেখবে এবং rm ব্যবহার করে ডাইরেক্টরি ডিলিট করতে বিশেষ কিছু আর্গুমেন্ট ব্যবহার করতে হয়। একটি symlink একটি ফোল্ডারকে নির্দেশ করতে পারে কিন্তু symlink টি আদতে একটি সাধারণ ফাইল।

কোন symlink এর অরিজিনাল ফাইল বা ডাইরেক্টরিকে ডিলিট করা হলে বা তার পাথ পরিবর্তন করা হলে symlink টি একটি broken link এ পরিণত হতে পারে।

উদাহরণস্বরূপ, 'transactions.txt' যদি /home/james থেকে /home/james/personal সরে যায় তাহলে 'trans.txt' লিংকটি একটি broken link এ রূপান্তরিত হবে। অরিজিনাল ফাইলটিকে এই লিংক ব্যবহার করে অ্যাক্সেস করতে গেলেই 'No such file or directory' এরর মেসেজ দেখা যাবে।

যখন আপনি একটি broken link খুঁজে পাবেন তখন লিংক ফাইলটিকে ডিলিট করে ফেললেই হবে। কোন broken link শনাক্ত করতে আপনি নিম্নোক্ত কমান্ডটি ব্যবহার করতে পারেনঃ

find /home/james -xtype l

এই কমান্ডটি james ডাইরেক্টরির সবগুলি broken link এর তালিকা দেখাবে। নিম্নোক্ত সিনট্যাক্সের মতো -delete অপশন পাস করা হলে broken link গুলি ডিলিট হয়ে যাবেঃ

find /home/james -xtype l -delete

উপসংহার

লিনাক্স এবং ইউনিক্স এর দুর্দান্ত সুবিধাগুলির একটি হল symbolic link।

যেসব ফাইল বা ডাইরেক্টরি সহজে অ্যাক্সেস করা যায় না সেগুলির জন্য আপনি সহজে অ্যাক্সেসযোগ্য symlink তৈরি করে রাখতে পারেন। একটি অনুশীলন করলে symlink এর ধারণা আপনার কাছে আরও পরিষ্কার হবে এবং আপনি আরও দক্ষভাবে আপনার কম্পিউটারের ফাইল সিস্টেম ম্যানেজ করতে পারবেন।