المقال الاصلي بكتابة Dillion Megida

تمت الترجمة بواسطة Tamer Saleh

الرابط الرمزي (symlink) (وهو اختصار لـ symbolic link) هو نوع من الملفات في Linux يشير إلى ملف أو مجلد آخر على جهاز الكمبيوتر الخاص بك. تشبه الروابط الاختصارية (shortcuts) الموجودة في Windows.

يسمي بعض الأشخاص الروابط الرمزية بـ"الروابط اللينة" (soft links) - وهو نوع من الروابط في أنظمة Linux / UNIX - على عكس "الروابط الصلبة" (hard links).

الفرق بين الرابط الليّن والرابط الصلب

تشبه الروابط اللينة (soft links) الـ shortcuts ، ويمكن أن تشير إلى ملف أو دليل في أي نظام ملفات (file system).

الروابط الصلبة (hard links) هي أيضًا shortcuts للملفات والمجلدات ، ولكن لا يمكن إنشاء رابط ثابت لمجلد أو ملف في نظام ملفات مختلف.

دعنا نلقي نظرة على الخطوات المتبعة في إنشاء وإزالة الرابط الرمزي. سنرى أيضًا الروابط التالفة وكيفية حذفها.

كيفية إنشاء رابط رمزي

الصيغة النصية لأمر إنشاء رابط رمزي هي:

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

ln هو أمر الرابط. تحدد العلامة -s أن الرابط يجب أن يكون لينًا. يمكن أيضًا إدخال الكود -s كـ -symbolic .

بشكل افتراضي ، ينشئ الأمر ln روابط صلبة. المُدخَل (argument) الأول للأمر هو عنوان الملف أو الدليل المُراد إنشاء الرابط له (path to the file (or folder) ) ، أما الـ argument الأخير فيشير إلى عنوان إنشاء الرابط (shortcut) نفسه (path to link ).

كيفية إنشاء رابط رمزي لملف - مثال لكتابة الأمر (command)

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

بعد تشغيل هذا الأمر ، ستتمكن من الوصول إلى / home / james / transaction.txt باستخدام trans.txt. أي تعديل يتم إجراؤه على trans.txt سينعكس أيضًا في الملف الأصلي.

لاحظ أن هذا الأمر أعلاه سينشئ ملف الرابط trans.txt في الدليل الحالي (current directory). يمكنك أيضًا إنشاء رابط ملف في عنوان مجلد كما يلي:

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

يجب أن يكون هناك دليل (directory) يسمى بالفعل "my-stuffs" في دليلك الحالي - إذا لم يكن الأمر كذلك ، فسيؤدي ذلك إلى ظهور خطأ.

كيفية إنشاء رابط رمزي لمجلد - مثال لكتابة الأمر (command)

على غرار ما ورد أعلاه ، سنستخدم:

ln -s /home/james james

سيؤدي هذا إلى إنشاء رابط مجلد يسمى "james" حيث توجد محتويات /home/james. ستؤثر أي تغييرات يتم إجراؤها على رابط المجلد هذا أيضًا على المجلد الأصلي.

كيفية إزالة رابط رمزي

قبل أن ترغب في إزالة رابط رمزي ، قد ترغب في تأكيد أن الملف أو المجلد هو رابط رمزي (symlink) ، حتى لا تتلف ملفاتك.

طريقة ما للقيام بذلك هي:

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

سيؤدي تشغيل هذا الأمر في وحدة نظامك (Terminal) إلى عرض خصائص الملف. في النتيجة ، إذا كان الحرف الأول حرف L صغير ('l') ، فهذا يعني أن الملف / المجلد هو رابط رمزي.

سترى أيضًا سهمًا (->) في النهاية يشير إلى الملف / المجلد الذي يشير إليه symlink.

توجد طريقتان لإزالة الرابط الرمزي:

الصيغة النصية للأمر هي:

unlink <path-to-symlink>

يؤدي هذا إلى حذف الرابط الرمزي إذا نجحت العملية.

حتى إذا كان الرابط الرمزي يشير لمجلد ، فلا تقم بإلحاق "/" ، لأن Linux سيفترض أنه دليل (directory) ولا يمكن استخدام الأمر unlink لحذف الدلائل.

كيفية استخدام rm لإزالة رابط رمزي

كما رأينا ، الرابط الرمزي هو مجرد ملف أو مجلد آخر يشير إلى ملف أو مجلد أصلي. لإزالة هذه العلاقة ، يمكنك إزالة الملف المرتبط.

ومن ثم ، فإن الصيغة النصية للأمر هي:

rm <path-to-symlink>

على سبيل المثال:

rm trans.txt
rm james

لاحظ أن محاولة تنفيذ rm james / قد ينتج عنها خطأ ، لأن Linux سيفترض أن 'james/' هو دليل ، مما قد يتطلب خيارات أخرى مثل r و f. لكن هذا ليس ما نريده. قد يكون الرابط الرمزي مجلدًا ، لكننا مهتمون فقط بالاسم.

تكمن الفائدة في استخدام الأمر rm عوضًا عن unlink في امكانية حذف عدة روابط رمزية في وقت واحد ، كما هو الحال في الملفات.

كيفية البحث عن الروابط التالفة وحذفها

تتلف الروابط عند تغيير أو حذف الملف أو المجلد الذي يشير إليه الرابط ، أو تغيير أو حذف العنوان (path) الذي يشير إليهم.

على سبيل المثال ، إذا تم نقل "Transaction.txt" من /home/james إلى /home/james/personal ، فإن رابط "trans.txt" يصبح تالفًا. ستؤدي كل محاولة للوصول إلى الملف إلى ظهور الخطأ 'No such file or directory'. هذا لأن الرابط ليس لديه محتويات خاصة به.

عندما تكتشف روابط معطلة ، يمكنك بسهولة حذف الملف. طريقة سهلة للعثور على الروابط الرمزية التالفة هي:

find /home/james -xtype l

سيؤدي هذا إلى سرد كافة الروابط الرمزية التالفة في دليل james - من الملفات إلى الدلائل إلى الدلائل الفرعية (sub-directories).

سيؤدي إلحاق الأمر -delete إلى حذفها كما يلي:

find /home/james -xtype l -delete

الخلاصة

الرابط الرمزي ميزة مثيرة للاهتمام لأنظمة Linux و UNIX.

يمكنك إنشاء روابط رمزية يسهل الوصول إليها للإشارة إلى ملف أو مجلد لا يكون الوصول إليه مناسبًا لولا استخدامك للروابط. بشيء من الممارسة ، ستفهم كيف تعمل هذه الروابط بشكل حدسي ، وستجعلك أكثر كفاءة في إدارة أنظمة الملفات (file systems).