Mkdir Command

1) ما هو أمر mkdir ولماذا نستخدمه؟

أمر mkdir اختصار لـ Make Directory
ووظيفته: إنشاء مجلدات جديدة داخل نظام لينكس.

تستخدمه عندما تريد:

  • تنظيم ملفاتك داخل مجلدات
  • إنشاء هيكل مشروع (مشروع ويب، تطبيق، تقارير…)
  • إنشاء مجلدات متعددة بسرعة
  • إنشاء مجلدات متداخلة (داخل بعضها)
  • تحديد الصلاحيات أثناء الإنشاء
2) الصيغة العامة (Syntax)
mkdir [OPTIONS] directory_name
Bash
  • OPTIONS: خيارات مثل -p أو -m
  • directory_name: اسم المجلد أو المسار الذي تريد إنشاءه
3) إنشاء مجلد واحد (أبسط استخدام)
mkdir mydir
Bash

للتحقق أنه انشأه:

ls
Bash

مثال مخرجات:

mydir
Bash
4) إنشاء عدة مجلدات دفعة واحدة

بدل تكتب mkdir أكثر من مرة:

mkdir dir1 dir2 dir3
Bash

تحقق:

ls
Bash

مثال:

dir1  dir2  dir3  mydir
Bash

هذه طريقة ممتازة لتجهيز بيئة عمل بسرعة.

5) إنشاء مجلد داخل مسار (قد ينجح وقد يفشل)

إذا حاولت تعمل مجلد داخل مجلد غير موجود، سيعطيك خطأ.

مثلاً لو parent غير موجود:

mkdir parent/child
Bash

قد يظهر خطأ مثل:

mkdir: cannot create directory ‘parent/child’: No such file or directory
Bash

ليش؟ لأن parent غير موجود.

6) الحل: إنشاء مجلدات متداخلة بـ -p (الأهم)

الخيار -p يعني:

  • أنشئ المجلدات الأب إذا لم تكن موجودة
  • ولا تعطيني خطأ إذا كانت موجودة مسبقًا

مثال:

mkdir -p parent/child/grandchild
Bash

اعرض الهيكل:

ls -R parent
Bash

مثال مخرجات:

parent:
child

parent/child:
grandchild

parent/child/grandchild:
Bash

-p مفيد جدًا في إنشاء هياكل المشاريع.

7) أمثلة عملية شائعة لهياكل مشاريع

هيكل مشروع ويب:

mkdir -p projects/web-app/src/components
Bash

تحقق:

ls -R projects
Bash

تقارير:

mkdir -p documents/reports/2023/q1
Bash
8) إنشاء مجلد باسم فيه مسافات (نقطة مهمة للمبتدئ)

لو تريد اسم مثل “My Folder” لازم تستخدم اقتباس:

mkdir "My Folder"
Bash

بدون اقتباس سينشئ مجلدين: My و Folder.

9) إنشاء مجلد ثم الدخول إليه مباشرة

لا يوجد خيار داخل mkdir نفسه للدخول تلقائيًا، لكن تعملها بخطوتين:

mkdir new_project
cd new_project
Bash

أو في سطر واحد:

mkdir new_project && cd new_project
Bash

&& يعني: نفذ الأمر الثاني فقط إذا نجح الأول.

10) إدارة الصلاحيات مع mkdir (Permissions) باستخدام -m
أ) إنشاء مجلد بصلاحية رقمية (Numeric)

مثال: صلاحية 755

mkdir -m 755 my_dir
Bash

معنى 755:

  • المالك: rwx (قراءة + كتابة + دخول)
  • المجموعة: r-x (قراءة + دخول)
  • الآخرون: r-x (قراءة + دخول)

تحقق من الصلاحيات:

ls -ld my_dir
Bash

قد يظهر:

drwxr-xr-x 2 labex labex 4096 Apr 12 12:34 my_dir
Bash

استخدم -d عشان يعرض صلاحيات المجلد نفسه وليس محتواه.

ب) إنشاء مجلد بصلاحية “رمزية” (Symbolic)

نفس 755 لكن بطريقة أوضح:

mkdir -m u=rwx,g=rx,o=rx my_dir2
Bash
ج) مجلد سري للمالك فقط (700)

هذا شائع للمجلدات الحساسة:

mkdir -m 700 secret_dir
Bash

تحقق:

ls -ld secret_dir
Bash

مخرجات متوقعة:

drwx------ 2 labex labex 4096 Apr 12 12:35 secret_dir
Bash
11) ملاحظة مهمة: لماذا قد تختلف الصلاحيات الافتراضية؟

عند إنشاء مجلد بدون -m:

mkdir normal_dir
Bash

الصلاحيات النهائية تعتمد على شيء اسمه umask (قناع الصلاحيات الافتراضي).
للمبتدئ: لا تقلق كثيرًا الآن — فقط اعرف أنك إذا تريد صلاحيات محددة من البداية استخدم -m.

12) أخطاء شائعة وحلولها
أ) “File exists” (المجلد موجود)
mkdir dir1
Bash

إذا كان موجودًا قد يعطي:

mkdir: cannot create directory ‘dir1’: File exists
Bash

الحل: استخدم -p إذا تريد يتجاهل وجوده:

mkdir -p dir1
Bash
ب) “Permission denied”

يعني لا تملك صلاحية إنشاء مجلد في هذا المكان (مثل / أو /etc غالبًا):

mkdir /test
Bash

الحل: أنشئ داخل بيتك ~ أو استخدم صلاحيات إدارية (لاحقًا مع sudo).

13) تدريب سريع (Practice)

نفّذ هذا التدريب لتثبت الفهم:

cd ~
mkdir -p ~/mkdir_practice/projects/app/src
mkdir dirA dirB dirC
mkdir "My Notes"
mkdir -m 700 secret_stuff
ls -lah
ls -ld secret_stuff
ls -R ~/mkdir_practice
Bash
هل الشرح اللي عندك كان كافي؟

نعم كملخص، لكنه لم يكن موسعًا بما يكفي للمبتدئ في نقاط مثل:

  • لماذا mkdir يفشل بدون -p
  • أسماء المجلدات التي تحتوي مسافات
  • التحقق الصحيح من صلاحيات المجلد (ls -ld)
  • أخطاء شائعة (exists / permission denied)
  • الاستخدام العملي مع &&