AzLearn

المسارات

Paths

مفهوم ~15 دقيقة

المسارات — Paths

المسار هو عنوان ملف أو مجلد. في Bash ستتعامل مع نوعين: مسار مطلق يبدأ من جذر النظام مثل /var/log/app.log، ومسار نسبي يبدأ من مكانك الحالي مثل reports/today.txt. المشكلة أن “مكانك الحالي” يتغير حسب المكان الذي شغّلت منه السكربت، لذلك يجب أن تكون واضحاً عندما تكتب سكربتاً يعتمد على ملفات.

إذا كان السكربت مخصصاً للعمل من أي مكان، فاجعل المسارات تأتي كمعاملات أو احسب مساراً معروفاً. لا تفترض أن المستخدم سيشغله من نفس المجلد. استخدام pwd مفيد للتشخيص، لكنه ليس دائماً الحل. أحياناً تحتاج script_dir، أي مجلد السكربت نفسه، حتى تصل إلى ملفات بجانبه. الأسلوب الموثوق:

script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

BASH_SOURCE[0] هو مسار الملف حتى عند استدعاء السكربت بـsource، بينما $0 قد يكون مسار الـshell نفسه. ضع هذا السطر قرب أول السكربت إذا كنت ستعتمد على ملفات بجواره.

قاعدة الأمان نفسها تعود: اقتبس المسارات. اكتب "$target_dir" لا $target_dir. أسماء الملفات قد تحتوي مسافات، خصوصاً في أجهزة المستخدمين. السكربت الجيد لا ينهار لأن شخصاً سمى مجلده April Reports.

مثال عملي

script.sh

بناء المسار بنص مباشر مقبول عندما تكون القيم بسيطة. في سكربتات أكبر، قد تحتاج تحققاً من أن base_dir ليس فارغاً وليس / وليس مساراً غامضاً. لا تضف حماية معقدة مبكراً، لكن لا تتجاهل الحالات الخطرة.

عادة تشغيلية

قبل أي نسخ أو نقل أو حذف، اطبع المسارات التي سيتعامل معها السكربت. في بيئات العمل، رسالة مثل Source: ... وTarget: ... تمنحك فرصة لاكتشاف الخطأ قبل التنفيذ.

تحدي — Challenge