أساسيات سطر الأوامر في Linux
خروج

الدرس 2 من 18 · المستخدم

التنقّل: pwd وls وcd والمسارات

25 د Debian 12

الهدف

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

أهم النقاط

  • يرتّب Linux كل شيء في شجرة واحدة تنطلق من الجذر /. لا يوجد C: أو D:.
  • pwd يعرض المجلد الحالي، وls يعرض محتواه، وcd ينقلك إلى مجلد آخر.
  • المسار المطلق يبدأ بـ / ويعمل من أي مكان: /srv/ecole/notes.
  • المسار النسبي ينطلق من المجلد الحالي: notes، ../notes.
  • . = المجلد الحالي، .. = المجلد الأب، ~ = مجلدك الشخصي.

1. شجرة واحدة وجذر واحد

في Windows، لكل قرص حرفه الخاص. أما في Linux، فـكل شيء ينطلق من مجلد وحيد يسمّى الجذر (root)، ويُرمز له بـ /. الأقراص ومفاتيح USB والمجلدات المشتركة عبر الشبكة «تُطعَّم» في مكان ما من هذه الشجرة.

/
├── etc/           الإعدادات
├── home/          مجلدات المستخدمين
│   ├── karim/
│   └── salma/
├── root/          المجلد الشخصي لـ root
└── srv/           البيانات التي يقدّمها الجهاز
    └── ecole/
        ├── classes/
        │   ├── 6A/
        │   └── 6B/
        └── notes/

لاحظ أن الفاصل في Linux هو الشرطة المائلة /، وليس الشرطة المائلة العكسية \ الخاصة بـ Windows.

2. pwd: أين أنا؟

pwd (print working directory) يعرض المسار الكامل للمجلد الذي توجد فيه.

pwd                # → /home/karim  (مباشرة بعد الاتصال، تكون في مجلدك الشخصي)

عند اتصالك، تصل إلى مجلدك الشخصي: /home/karim بالنسبة لكريم، و/root بالنسبة لـ root.

3. ls: ماذا يوجد هنا؟

ls                 # محتوى المجلد الحالي
ls /etc            # محتوى مجلد آخر، دون الانتقال إليه
ls -l              # الصيغة الطويلة: الصلاحيات، المالك، الحجم، التاريخ
ls -a              # كل شيء، بما في ذلك الملفات المخفية (التي تبدأ بنقطة)
ls -A              # مثل -a، لكن دون المدخلين . و..
ls -lh             # أحجام سهلة القراءة: 4,0K، 12M، 1,5G
ls -lt             # مرتّب حسب التاريخ، الأحدث أولًا
ls -ltr            # مرتّب حسب التاريخ، الأحدث في الأخير (عملي لملفات السجلات)
ls -R              # تكراري: المجلد وكل مجلداته الفرعية
ls -ld /srv        # معلومات المجلد نفسه، وليس محتواه

لنقرأ سطرًا من نتيجة ls -l:

drwxr-xr-x 4 root root 4096 Oct 18 10:12 classes
-rw-r--r-- 1 root root  812 Oct 18 10:15 eleves.csv
│└───┬───┘ │ └┬─┘ └┬─┘ └┬─┘ └─────┬────┘ └─ الاسم
│    │     │  │    │    │        └────── تاريخ آخر تعديل
│    │     │  │    │    └─────────────── الحجم بالبايت (octets)
│    │     │  │    └──────────────────── المجموعة المالكة
│    │     │  └───────────────────────── المستخدم المالك
│    │     └──────────────────────────── عدد الروابط
│    └────────────────────────────────── الصلاحيات (درس خاص لاحقًا)
└─────────────────────────────────────── النوع: d = مجلد، - = ملف، l = رابط

الملفات المخفية. كل اسم يبدأ بنقطة (.bashrc، .ssh) يكون مخفيًا: الأمر ls وحده لا يعرضه. هذا ليس حماية، بل مجرد طريقة لعدم إثقال العرض بملفات الإعدادات.

في أغلب التوزيعات، ls هو اسم مستعار (alias) لـ ls --color=auto: تظهر المجلدات باللون الأزرق، والبرامج باللون الأخضر.

4. cd: تغيير المجلد

cd /srv/ecole      # الانتقال إلى /srv/ecole (مسار مطلق)
cd classes         # النزول إلى المجلد الفرعي classes (مسار نسبي)
cd ..              # الصعود مستوى واحدًا → /srv/ecole
cd ../..           # الصعود مستويين → /
cd                 # بدون وسيط: العودة إلى المجلد الشخصي
cd ~               # الشيء نفسه
cd -               # العودة إلى المجلد السابق (عملي جدًا للتناوب بين مجلدين)

cd لا يقول شيئًا عندما يسير كل شيء على ما يرام. وفي حالة الخطأ، يجيب مثلًا بـ No such file or directory (المجلد غير موجود) أو Not a directory (أعطيته ملفًا).

5. المسارات المطلقة والمسارات النسبية

هذا هو المفهوم الأهم في هذا الدرس.

لنأخذ مثال مدرسة: المدير موجود في المكتب /srv/ecole/classes/6A ويريد الوصول إلى مجلد النقط.

النوع مثال ينطلق من… يعمل…
مطلق /srv/ecole/notes الجذر / من أي مكان
نسبي ../../notes المجلد الحالي فقط انطلاقًا من هذا المجلد

كيف نقرأ ../../notes انطلاقًا من /srv/ecole/classes/6A:

/srv/ecole/classes/6A
        ..   → /srv/ecole/classes
     ../..   → /srv/ecole
../../notes  → /srv/ecole/notes

الاختصارات التي يجب معرفتها:

الرمز المعنى
/ في البداية الجذر
. المجلد الحالي (./script.sh = «السكربت الموجود هنا»)
.. المجلد الأب
~ مجلدك الشخصي (/home/karim)
~salma المجلد الشخصي لسلمى (/home/salma)

متى نستعمل هذا أو ذاك؟ في سكربت أو مهمة مجدولة، استعمل دائمًا مسارات مطلقة: فالسكربت لا يعرف من أي مجلد سيُشغَّل. أما على لوحة المفاتيح، فالمسارات النسبية تربحك الوقت.

6. مفتاح Tab، أفضل صديق لك

اكتب cd /sr ثم Tab: تُكمل bash إلى cd /srv/. اكتب cd /srv/ecole/c ثم Tab: classes/. إذا كانت هناك عدة احتمالات، فالضغط مرتين على Tab يعرضها. هكذا تتجنّب أخطاء الكتابة… وتتحقّق في الوقت نفسه من أن المسار موجود.

7. مثال كامل

السيدة بنعلي، كاتبة المدرسة، تستكشف الخادم:

pwd                       # /root
cd /srv/ecole             # تنتقل إلى مجلد المدرسة
ls                        # classes  notes
ls -a                     # .  ..  .secret  classes  notes   ← ملف مخفي!
cd classes/6A             # مسار نسبي
pwd                       # /srv/ecole/classes/6A
ls ../../notes            # trimestre1.txt   ← تنظر إلى مكان آخر دون أن تتحرّك
cd -                      # العودة إلى /srv/ecole
cd                        # العودة إلى مجلدها الشخصي

أخطاء متكررة

  • نسيان / في البداية: cd srv/ecole يبحث عن مجلد srv داخل المجلد الحالي، وليس في الجذر.
  • لصق cd و..: cd.. لا يعمل في bash، يجب وضع مسافة: cd ...
  • الاعتقاد بأن مجلدًا فارغ لأن ls لا يعرض شيئًا: قد يحتوي على ملفات مخفية، تحقّق بـ ls -a.
  • المسافات في الأسماء: cd Mes documents يفشل؛ اكتب cd "Mes documents" أو cd Mes\ documents.

التطبيق العملي (Lab)

في مختبر Debian 12 هذا، تمّ إعداد شجرة صغيرة لمدرسة في /srv/ecole. ستقوم بما يلي:

  1. الانتقال إلى مجلد القسم 6B وحفظ مساره المطلق؛
  2. اكتشاف الملف المخفي في /srv/ecole؛
  3. عرض المعلومات المفصّلة للمجلد نفسه؛
  4. إيجاد المسار النسبي الذي يوصل من 6A إلى مجلد النقط.

نصيحة: جرّب كل أمر cd قبل كتابة جوابك، واستعمل pwd للتحقّق من المكان الذي وصلت إليه.

اختبار قصير

  1. ماذا يفعل cd عند كتابته وحده، دون وسيط؟
  2. أنت في /var/log/nginx. إلى أين يوصلك cd ../..؟
  3. هل /home/karim/factures مسار مطلق أم نسبي؟ وماذا عن factures/2026؟
  4. أي خيار للأمر ls يعرض الملفات المخفية؟
  5. لماذا يجب تفضيل المسارات المطلقة داخل سكربت؟
الأجوبة
  1. يعيدك إلى مجلدك الشخصي (~).
  2. إلى /var.
  3. الأول مطلق (يبدأ بـ /)؛ والثاني نسبي.
  4. -a (أو -A، الذي لا يعرض . و..).
  5. لأننا لا نعرف من أي مجلد سيُشغَّل السكربت: قد يشير المسار النسبي إلى مكان خاطئ.

المصادر المرجعية: Debian Reference وCahier de l'admin Debian (رخص حرة)، Ubuntu Server Guide (CC BY-SA 3.0). نص أصلي من MasterLinux.

تمارين تطبيقية

تُنجَز على Debian 12

الطرفية عبر الإنترنت قادمة قريبًا. في انتظار ذلك، أنجِز هذه المهام على جهازك بنظام لينكس أو على آلة افتراضية أو WSL.

  1. انتقل إلى مجلد القسم 6B، ثم احفظ المسار المطلق للمجلد الحالي في الملف /root/chemin.txt.
    عرض تلميحcd /srv/ecole/classes/6B، ثم pwd > /root/chemin.txt
    عرض الحل
    cd /srv/ecole/classes/6B && pwd > /root/chemin.txt

    التحقق : grep -qx /srv/ecole/classes/6B /root/chemin.txt

  2. يحتوي المجلد /srv/ecole على ملف مخفي. احفظ القائمة «الكاملة» لهذا المجلد (بما فيها الملفات المخفية) في الملف /root/liste.txt.
    عرض تلميحتبدأ الملفات المخفية بنقطة. الخيار -a للأمر ls يعرضها: ls -a /srv/ecole > /root/liste.txt
    عرض الحل
    ls -a /srv/ecole > /root/liste.txt

    التحقق : grep -qx .secret /root/liste.txt

  3. احفظ في الملف /root/details.txt المعلومات المفصّلة للمجلد /srv/ecole «نفسه» (وليس لمحتواه).
    عرض تلميحالصيغة الطويلة (-l) + الخيار -d للحديث عن المجلد نفسه: ls -ld /srv/ecole
    عرض الحل
    ls -ld /srv/ecole > /root/details.txt

    التحقق : grep -q '^d.* /srv/ecole$' /root/details.txt

  4. أنت في /srv/ecole/classes/6A. ما المسار «النسبي» الذي يوصل إلى المجلد /srv/ecole/notes؟ اكتبه (وهو وحده فقط) في الملف /root/relatif.txt.
    عرض تلميحكل .. يصعد مستوى واحدًا: 6A → classes → ecole، ثم ننزل إلى notes. جرّبه بالأمر cd قبل كتابته بالأمر echo.
    عرض الحل
    echo ../../notes > /root/relatif.txt

    التحقق : grep -qx '../../notes' /root/relatif.txt

المراجع الرسمية المعتمدة: Debian Reference — chapitre 1, système de fichiers et commandes de base ; Cahier de l'admin Debian — l'interpréteur de commandes. نص أصلي من MasterLinux.