1) ما هو أمر mkdir ولماذا نستخدمه؟
أمر mkdir اختصار لـ Make Directory
ووظيفته: إنشاء مجلدات جديدة داخل نظام لينكس.
تستخدمه عندما تريد:
- تنظيم ملفاتك داخل مجلدات
- إنشاء هيكل مشروع (مشروع ويب، تطبيق، تقارير…)
- إنشاء مجلدات متعددة بسرعة
- إنشاء مجلدات متداخلة (داخل بعضها)
- تحديد الصلاحيات أثناء الإنشاء
2) الصيغة العامة (Syntax)
mkdir [OPTIONS] directory_nameBash- OPTIONS: خيارات مثل
-pأو-m - directory_name: اسم المجلد أو المسار الذي تريد إنشاءه
3) إنشاء مجلد واحد (أبسط استخدام)
mkdir mydirBashللتحقق أنه انشأه:
lsBashمثال مخرجات:
mydirBash4) إنشاء عدة مجلدات دفعة واحدة
بدل تكتب mkdir أكثر من مرة:
mkdir dir1 dir2 dir3Bashتحقق:
lsBashمثال:
dir1 dir2 dir3 mydirBashهذه طريقة ممتازة لتجهيز بيئة عمل بسرعة.
5) إنشاء مجلد داخل مسار (قد ينجح وقد يفشل)
إذا حاولت تعمل مجلد داخل مجلد غير موجود، سيعطيك خطأ.
مثلاً لو parent غير موجود:
mkdir parent/childBashقد يظهر خطأ مثل:
mkdir: cannot create directory ‘parent/child’: No such file or directoryBashليش؟ لأن parent غير موجود.
6) الحل: إنشاء مجلدات متداخلة بـ -p (الأهم)
الخيار -p يعني:
- أنشئ المجلدات الأب إذا لم تكن موجودة
- ولا تعطيني خطأ إذا كانت موجودة مسبقًا
مثال:
mkdir -p parent/child/grandchildBashاعرض الهيكل:
ls -R parentBashمثال مخرجات:
parent:
child
parent/child:
grandchild
parent/child/grandchild:
Bash
-pمفيد جدًا في إنشاء هياكل المشاريع.
7) أمثلة عملية شائعة لهياكل مشاريع
هيكل مشروع ويب:
mkdir -p projects/web-app/src/components
Bashتحقق:
ls -R projectsBashتقارير:
mkdir -p documents/reports/2023/q1Bash8) إنشاء مجلد باسم فيه مسافات (نقطة مهمة للمبتدئ)
لو تريد اسم مثل “My Folder” لازم تستخدم اقتباس:
mkdir "My Folder"Bashبدون اقتباس سينشئ مجلدين: My و Folder.
9) إنشاء مجلد ثم الدخول إليه مباشرة
لا يوجد خيار داخل mkdir نفسه للدخول تلقائيًا، لكن تعملها بخطوتين:
mkdir new_project
cd new_projectBashأو في سطر واحد:
mkdir new_project && cd new_projectBash
&&يعني: نفذ الأمر الثاني فقط إذا نجح الأول.
10) إدارة الصلاحيات مع mkdir (Permissions) باستخدام -m
أ) إنشاء مجلد بصلاحية رقمية (Numeric)
مثال: صلاحية 755
mkdir -m 755 my_dirBashمعنى 755:
- المالك:
rwx(قراءة + كتابة + دخول) - المجموعة:
r-x(قراءة + دخول) - الآخرون:
r-x(قراءة + دخول)
تحقق من الصلاحيات:
ls -ld my_dirBashقد يظهر:
drwxr-xr-x 2 labex labex 4096 Apr 12 12:34 my_dirBashاستخدم
-dعشان يعرض صلاحيات المجلد نفسه وليس محتواه.
ب) إنشاء مجلد بصلاحية “رمزية” (Symbolic)
نفس 755 لكن بطريقة أوضح:
mkdir -m u=rwx,g=rx,o=rx my_dir2Bashج) مجلد سري للمالك فقط (700)
هذا شائع للمجلدات الحساسة:
mkdir -m 700 secret_dirBashتحقق:
ls -ld secret_dirBashمخرجات متوقعة:
drwx------ 2 labex labex 4096 Apr 12 12:35 secret_dirBash11) ملاحظة مهمة: لماذا قد تختلف الصلاحيات الافتراضية؟
عند إنشاء مجلد بدون -m:
mkdir normal_dirBashالصلاحيات النهائية تعتمد على شيء اسمه umask (قناع الصلاحيات الافتراضي).
للمبتدئ: لا تقلق كثيرًا الآن — فقط اعرف أنك إذا تريد صلاحيات محددة من البداية استخدم -m.
12) أخطاء شائعة وحلولها
أ) “File exists” (المجلد موجود)
mkdir dir1Bashإذا كان موجودًا قد يعطي:
mkdir: cannot create directory ‘dir1’: File existsBashالحل: استخدم -p إذا تريد يتجاهل وجوده:
mkdir -p dir1Bashب) “Permission denied”
يعني لا تملك صلاحية إنشاء مجلد في هذا المكان (مثل / أو /etc غالبًا):
mkdir /testBashالحل: أنشئ داخل بيتك ~ أو استخدم صلاحيات إدارية (لاحقًا مع 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_practiceBashهل الشرح اللي عندك كان كافي؟
نعم كملخص، لكنه لم يكن موسعًا بما يكفي للمبتدئ في نقاط مثل:
- لماذا
mkdirيفشل بدون-p - أسماء المجلدات التي تحتوي مسافات
- التحقق الصحيح من صلاحيات المجلد (
ls -ld) - أخطاء شائعة (exists / permission denied)
- الاستخدام العملي مع
&&