প্রতীকী লিঙ্কগুলি পরমাণুভাবে সংশোধন করা দরকার। আপনি যদি সেগুলি লেখার অর্ধেক পথ ধরে রাখেন তবে সেগুলি কার্যকর হবে না। প্রতীকী লিঙ্কটির বিষয়বস্তু বেশ ছোট (লিনাক্সে সর্বাধিক 4095 অক্ষর: কোনও ফাইলের পাথের সর্বাধিক দৈর্ঘ্য), তাই কার্নেল স্তরের প্রতীকী লিঙ্কের অংশ সম্পাদনা করার ক্ষেত্রে সামান্য বিন্দু থাকবে। সুতরাং কার্নেল একটি প্রতীকী লিঙ্ক সম্পাদনা করার জন্য কোনও ইন্টারফেসের প্রস্তাব দেয় না, একটি নতুন ইন্টারফেস তৈরি করার জন্য কেবল একটি ইন্টারফেস, symlink
সিস্টেম কল ( unlink
যেকোন ফাইল সরানোর জন্য জেনেরিক ইন্টারফেস )।
symlink
সিস্টেম কল শুধুমাত্র একটি নতুন সিম্বলিক লিঙ্ক তৈরি করে, কোনো বিদ্যমান ফাইল মুছে যায় না। এটি বিরক্তিকর, তবে ফাইল তৈরির জন্য অন্যান্য সিস্টেমের কলগুলির সাথে সামঞ্জস্যপূর্ণ open
(যা একটি নতুন ফাইল তৈরি করতে পারে বা একটি বিদ্যমান ফাইল কেটে ফেলতে পারে তবে একটি নতুন নির্মিত ফাইল দ্বারা একটি বিদ্যমান ফাইলকে প্রতিস্থাপন করতে পারে না) এবং mkdir
।
শেলটিতে, যেমন আপনি আবিষ্কার করেছেন , আপনি ln
কমান্ডের সাহায্যে প্রতীকী লিঙ্কটি প্রতিস্থাপন করতে পারবেন না ( ln -sf
পূর্ববর্তী ফাইলটিকে লিঙ্কযুক্ত করে প্রতীকী লিঙ্কটি তৈরি করে), আপনি প্রথমে একটি অস্থায়ী নামের অধীনে একটি প্রতীকী লিঙ্ক তৈরি করে এটি করতে পারেন এবং তারপরে এটি স্থানান্তরিত করুন।
tmp=$(TMPDIR=$(dirname -- "$link") mktemp)
ln -sf -- "$target" "$tmp"
mv -f "$tmp" "$link"