قد تلاحظ أحيانًا أن بعض الملفات أو المجلدات في نظامك لا تفتح رغم أنها ما زالت تظهر في مدير الملفات. السبب غالبًا هو وجود روابط رمزية فقدت وجهتها الأصلية — ما يُعرف بالروابط التالفة أو المكسورة. هذه الروابط لا تؤدي إلى مكان، لكنها تبقى عالقة في النظام وتشغل مساحة وتسبب ارتباكًا أثناء النسخ أو المزامنة.

لحسن الحظ، يمكن اكتشاف هذه الروابط الرمزية التالفة وتنظيفها بخطوات بسيطة عبر الأوامر المدمجة في أنظمة Linux وmacOS وحتى Windows. العملية لا تستغرق وقتًا طويلًا، لكنها تساعد في الحفاظ على نظام نظيف ومستقر وتمنع الأخطاء غير المتوقعة أثناء العمل أو النسخ الاحتياطي.
الروابط الرمزية طريقة رائعة لتنظيم ملفاتك، لكنها ليست مثالية. الروابط الرمزية هشة للغاية، ومن السهل أن ينتهي بك الأمر بروابط تشير إلى ملفات غير موجودة. يمكن لبرنامج find مساعدتك في حل هذه المشكلة، ولكن هناك أداة خارجية تؤدي المهمة بشكل أفضل.
ما هو الرابط الرمزي المعطل، ولماذا هو مهم؟
يشير الرابط الرمزي المعطل إلى ملف غير موجود. قد يكون ذلك بطريقتين:
الربط بملف لم يكن موجودًا أبدًا. يمكنك تجربة ذلك بنفسك عن طريق تمرير اسم ملف غير موجود إلى ln، مثل: ln -s file-does-not-exist.
- الربط بملف موجود، ثم حذفه، مثل: ln -s file link-to-file; rm file.
تُسمى هذه الروابط الرمزية المعطلة أحيانًا “روابط متدلية”، وقد تُسبب مشاكل لأنها قد تُعطل شيئًا آخر، أيًا كان الغرض الأصلي من استخدامها. لا تتعامل البرامج دائمًا مع الروابط المعطلة بشكل متسق:

ملاحظة
لا يُميّز برنامج ls حتى بين الروابط المعطوبة والروابط العادية، مما يُصعّب اكتشافها أثناء الاستخدام.
تُنتج العديد من أدوات GNU رسالة خطأ مُربكة بعض الشيء: “مستويات كثيرة جدًا من الروابط الرمزية”. هذا مُوضّح في وثائق دالة المكتبة المفتوحة الأساسية، والتي تصف خطأ ELOOP:
[ELOOP]
تم العثور على عدد كبير جدًا من الروابط الرمزية عند ترجمة اسم المسار. يُفهم هذا على أنه رابط رمزي متكرر.
لحسن الحظ، يعطي أمر الملف خطأً أكثر فائدة:

هذا منطقي لأن الغرض الأساسي من أمر “الملف” هو توفير معلومات حول نوع الملف، بينما يحاول wc ومعظم البرامج الأخرى تنفيذ مهام أخرى على محتويات ذلك الملف.
يمكن أن تُسبب الروابط التالفة فوضى في نظام الملفات لديك، وتشغل مساحة دون فائدة. كما يمكن أن تُسبب نتائج مُربكة أو أخطاءً غير مرغوب فيها عندما تواجهها البرامج التي تعمل على العديد من الملفات. من السهل فقدان رابط تالف في مجلد عميق، ثم مواجهة مشاكل في البحث أو البحث المتكرر.
نصيحة
تُشير بعض البرامج إلى الروابط التالفة، مثل eza، الذي يُظهرها باللون الأحمر:

كيفية العثور على الروابط المتدلية باستخدام أمر find
يُعد أمر find أداةً أساسيةً موثوقةً ومثاليةً لجميع أنواع عمليات البحث عن الملفات. سواءً كنت تبحث عن ملفات خضعت لتعديلات مؤخرًا، أو ملفات تابعة لمستخدم معين، أو مجلدات فارغة، فهناك طريقةٌ لاستخدامه تُساعدك. وهذا يشمل البحث عن الروابط الرمزية:
find . -type l
يقتصر خيار -type l على الروابط الرمزية فقط، مما يُساعد على تضييق نطاق البحث، لكن التحدي التالي يكمن في تحديد الروابط المعطوبة. يعتمد الحل على إصدار find الذي تستخدمه.
يُعد find الحديث من GNU الأكثر فائدةً لأنه يدعم خيار -xtype:
find . -xtype l
يعني الخيار -xtype، عمليًا، “حل سلاسل الروابط الرمزية قبل اختبار هذا النوع”. ولأن الملف لا يمكن أن يبقى رابطًا إلا إذا فشل هذا الحل، يجب أن تكون الملفات الناتجة روابط معطلة.
قد لا تدعم الإصدارات القديمة من find، بما في ذلك الإصدار المثبت على نظام macOS Tahoe، هذه الوسيطة، لذا ستحتاج إلى بديل. لحسن الحظ، يوجد الخيار -L. يعمل هذا الخيار تقريبًا مثل -xtype، ولكنه لا يتحقق من نوع الملف؛ بل يحاول فقط حل أي روابط. ستظل بحاجة إلى استخدام التحقق من النوع -type معه:
find -L . -type l
الفرق الكبير الآخر هو أن الأمر -L يتبع الروابط الرمزية أثناء عملية البحث المتكررة في المجلدات. إذا كان لديك رابط غريب في مجلد عميق يشير إلى / (أي الجذر)، فستضطر للبحث في نظام الملفات بأكمله. ربما لا ترغب في القيام بذلك، ولهذا السبب ليس الأمر -L هو الخيار الافتراضي.
يمكن حل هذه المشكلة باستخدام الأمر find للعثور على جميع الروابط الرمزية، ثم استخدام خيار -exec للتحقق من وجود كل ملف:
find . -type l -exec test ! -e {} \; -print
هذا الأمر معقد بعض الشيء، ولكنه فعال. يبحث خيار “-type l” عن الروابط، كما في السابق، ثم يستدعي “-exec” أمر الاختبار باستخدام الخيار -e للبحث عن الملفات غير الموجودة. وأخيرًا، يُخرج أمر “print” اسم الملف.
إذا كنت تحاول العثور على روابط رمزية معطلة على نظام لينكس حديث، فيُفترض أن يكون الأمر “find -xtype l” كافيًا. في الواقع، يمكنك استخدام أمر find لحذف الروابط الرمزية المعطلة، مرة أخرى، بالاستفادة من الخيار -exec:
find . -xtype l -exec rm {} \;لكن عليك التحقق من هذه الروابط أولًا، ومرة أخرى، يصبح أمر macOS المكافئ أكثر صعوبة. قد ترغب في إنشاء اسم مستعار أو إنشاء دالة shell لتجنب الحاجة إلى تذكره. أو يمكنك استخدام بديل أفضل…
استخدام برنامج الروابط الرمزية للعثور على الروابط المعطلة وإصلاحها
إذا وجدت الطرق المذكورة أعلاه غير عملية، أو إذا كنت تواجه مشاكل في الروابط الرمزية باستمرار، فعليك التفكير في استخدام أداة الروابط الرمزية. يستطيع هذا البرنامج الصغير، المكتوب بلغة C، تحديد أنواع عديدة من الروابط التي بها مشاكل، بما في ذلك الروابط المعطلة.
نظرًا لبساطته، لا توجد طريقة تثبيت معقدة، لذا ستحتاج إلى إنشائه من المصدر. لحسن الحظ، فإن بساطته تعني أيضًا أنك لن تواجه أي مشاكل.
حمّل مستودع GitHub الخاص بالبرنامج واتبع عملية البناء الكلاسيكية المكونة من ثلاث خطوات:
./configure
make
make installنصيحة
لن يتوفر مُجمِّع لغة C افتراضيًا لمستخدمي نظام macOS، وسيحتاجون إلى تثبيت أدوات سطر أوامر Apple لبناء الروابط الرمزية. ابدأ بتشغيل الأمر xcode-select –install.
بعد تثبيت البرنامج، يمكنك تشغيله عن طريق تمرير مسار مجلد للبحث، مثلًا:
symlinks ~/
قد لا تحصل على أي نتائج من هذا الأمر؛ فهو افتراضيًا لا يتكرر في المجلدات الفرعية. خيار -r يقوم بذلك، ومن المرجح أن يكشف عن العديد من الروابط المُشكلة في نظام الملفات لديك. في الواقع، عندما شغّلتُ الأمر “symlinks -r ~/ | wc -l” لأول مرة، أبلغ نظامي عن عدد هائل من الروابط يبلغ 16,617! من الواضح أن روابطي الرمزية سيئة التنظيم.
مع ذلك، ليست كل هذه الروابط معطلة. يُبلغ الأمر “symlinks” عن أربعة أنواع من الروابط غير الكاملة:
- معطلة (متدلية).
- مطلقة: قد تُسبب هذه الروابط مشاكل في نقاط التثبيت.
- فوضوية: روابط تحتوي على . أو / غير ضرورية في مسارها.
- طويلة: روابط تحتوي على .. غير ضرورية في مسارها. يُبلغ عنها فقط عند استخدام الخيار -s.
تنشأ هذه المشاكل لأن البرنامج الذي تستخدمه لإنشاء الروابط، ln، لا يتحقق من المسار الذي تمرره إليه أو يُطبّقه. أفضل ما يُقدّمه هو الخيار -w، الذي يُحذّرك إذا أنشأت رابطًا مُعلّقًا، ولكنه يُنشئه مع ذلك. لا يُوفّر أمر ln أي حماية ضد هذه الأنواع الأخرى من الروابط المُشكّلة للمشكلات.
يمكن أن تُساعدك الروابط الرمزية أيضًا في تنظيف هذه الروابط، من خلال نوعين من الإصلاح.
أولًا، هناك الخيار -d، الذي يُزيل الروابط المُعلّقة. إذا كنت تُريد حياةً سهلة، فهذه هي أسرع طريقة للتخلص من هذه الملفات غير المُجدية. قد ترغب في مُراجعة قائمة الروابط المُعلّقة أولًا، حيث يُمكن إصلاحها يدويًا. على سبيل المثال، إذا قمت بإعادة تسمية دليل وعطّلت مجموعة من الروابط بفعل ذلك، يُمكنك إعادة بناء كل رابط يدويًا.
الخيار الثاني هو -c، وهو يُصلح الروابط المُطلقة، والروابط غير المُنظّمة، والروابط الطويلة – باستخدام الخيار -s. هذا خيارٌ مُثيرٌ للجدل في رأيي؛ هذه الأنواع من الروابط الرمزية أقل إشكالية من الروابط المعطلة تمامًا. سأستخدم هذا الخيار فقط إذا كنت أستخدم بانتظام نقاط تثبيت مختلفة لأنظمة الملفات، لتجنب مشاكل الروابط المطلقة.
الروابط الرمزية أداة مفيدة لتنظيم الملفات، لكنها تتحول أحيانًا إلى مصدر إزعاج عندما تفقد وجهتها الأصلية. تنظيف هذه الروابط التالفة بانتظام يُبقي النظام خفيفًا وسهل الإدارة، ويمنع الأخطاء التي قد تُبطئ عملك أو تؤثر على النسخ الاحتياطية. بضع أوامر بسيطة تكفي لاستعادة النظام إلى حالته المثالية — خالٍ من المسارات المكسورة ومُهيأ للعمل بسلاسة.
 
 
 
 




 

