Linux: عمليات الملفات والدلائل — إنشاء / نسخ / نقل / حذف

في طرفية لينكس، إنشاء الملفات ونسخها ونقلها وحذفها يتم بضغطات مفاتيح قليلة — أسرع وأدق من استخدام الماوس.

📋 المتطلبات المسبقة: يجب إكمال

1. ما ستتعلمه


2. شياو مينغ يتعلم إنشاء هيكل مشروع كامل بسطر واحد

(1) الألم: إنشاء الدلائل طبقة بطبقة بالنقر باليمين

أراد شياو مينغ إنشاء هيكل دليل مشروع: myblog/src/css وmyblog/src/js وmyblog/docs. على ويندوز كان عليه النقر باليمين → مجلد جديد، مُنشئًا كل طبقة يدويًا — عمل متكرر في كل مرة.

(2) أمر واحد ينشئ الهيكل كاملًا

المهندس الأول بوب كتب سطرًا واحدًا في طرفيته:

BASH
mkdir -p myblog/{src/{css,js,img},docs}

بعد ضغط Enter، أظهر tree myblog:

TEXT

myblog/
├── src/
│   ├── css/
│   ├── js/
│   └── img/
└── docs/

انبهر شياو مينغ. فهم أخيرًا لماذا يحب المطورون الطرفية.

(3) الفائدة: كفاءة العمليات ترتفع بشكل كبير

بعد تعلم أوامر العمليات الخمسة، سرعة شياو مينغ في إنشاء وتنظيم الملفات انتقلت من "دقائق" إلى "ثوانٍ."


3. نقاط المعرفة

(1) touch — إنشاء ملفات أو تحديث الطوابع الزمنية

BASH
touch filename

إذا لم يكن الملف موجودًا، touch ينشئ ملفًا فارغًا. إذا كان موجودًا، يُحدَّث وقت الوصول والتعديل إلى الوقت الحالي.

(2) mkdir — إنشاء دلائل

BASH
mkdir dirname          # إنشاء دليل واحد
mkdir -p a/b/c         # إنشاء متكرر (ينشئ الدلائل الأب تلقائيًا إن لم تكن موجودة)
mkdir dir1 dir2 dir3   # إنشاء عدة دلائل دفعة واحدة
mkdir -p src/{css,js}  # توسيع الأقواس للإنشاء المجمّع

> 💡 نصيحة: `mkdir -p` مع توسيع الأقواس `{a,b,c}` هي مجموعة bash قوية — `mkdir -p project/{src/{css,js},docs}` ينشئ شجرة دلائل مشروع كاملة بسطر واحد، أسرع بكثير من إنشاء كل طبقة على حدة.

(3) cp — نسخ

BASH
cp source destination          # نسخ ملف
cp -r source_dir dest_dir      # نسخ دليل بشكل متكرر
cp -i source destination       # وضع تفاعلي (تأكيد قبل الكتابة فوق)
cp -u source destination       # نسخ فقط إذا كان المصدر أحدث
cp -v source destination       # عرض تقدم النسخ
cp -p source destination       # حفظ خصائص الملف (صلاحيات/طوابع زمنية)

(4) mv — نقل وإعادة تسمية

BASH
mv oldname newname             # إعادة تسمية
mv file.txt /path/to/dest/     # نقل ملف إلى دليل آخر
mv dir1 dir2                   # إعادة تسمية إذا dir2 غير موجود؛ نقله داخله إذا كان موجودًا
mv -i source dest              # تأكيد قبل الكتابة فوق
mv -u source dest              # نقل فقط إذا كان المصدر أحدث

(5) rm — حذف

BASH
rm file.txt                    # حذف ملف
rm -r dirname                  # حذف دليل بشكل متكرر
rm -f file.txt                 # حذف بالقوة (بدون تأكيد)
rm -i file.txt                 # وضع تفاعلي (تأكيد قبل الحذف)
rm -rf dirname                 # حذف متكرر بالقوة (⚠️ مجموعة خطرة)
⚠️ تحذير أمان: rm -rf / سيحذف النظام بالكامل. لا تشغّل أبدًا rm -rf / كمستخدم جذر. اعتد على استخدام -i في العمليات اليومية.

⚠️ ملاحظة: الملفات المحذوفة بـrm -rf لا تذهب لسلة المحذوفات ولا يمكن استرجاعها بالطرق العادية. قبل استخدام rm -rf، تأكد دائمًا من دليلك الحالي (pwd) والمسار الذي تحذفه لتجنب الحذف العرضي. فكّر في إضافة alias rm='rm -i' إلى ملف .bashrc كإجراء أمان.

(6) الروابط الصلبة مقابل الروابط الرمزية

الميزة رابط صلب رابط رمزي (symlink)
الأمر ln target link_name ln -s target link_name
inode نفس الملف الأصلي مختلف
عبر أنظمة الملفات لا نعم
يمكن ربط الدلائل لا نعم
بعد حذف الأصلي الرابط يعمل الرابط ينقطع (رابط معلّق)
حجم الملف نفس الأصلي يخزّن سلسلة المسار فقط
TEXT
# رابط صلب
ln original.txt hardlink.txt

# رابط رمزي
ln -s /usr/bin/python3 python3

(7) ▶ مثال: إنشاء ملفات ودلائل

BASH
# إنشاء ملفات فارغة
touch index.html
touch style.css script.js    # إنشاء عدة دفعة واحدة

# إنشاء دلائل
mkdir projects
mkdir -p projects/web/src/css    # إنشاء دلائل متداخلة بشكل متكرر

# توسيع الأقواس (ميزة bash)
mkdir -p {2024,2025,2026}/{01,02,03}
# ينشئ: 2024/01، 2024/02، 2024/03، 2025/01، ...

الإخراج:

TEXT
2024:
01  02  03
2025:
01  02  03
2026:
01  02  03

(8) ▶ مثال: نسخ ملفات

BASH
# نسخ ملف واحد
cp index.html index.backup.html

# نسخ دليل (يتطلب -r)
cp -r projects projects-backup

# وضع تفاعلي لمنع الكتابة فوق العرضية
cp -i important.txt /backup/

# حفظ خصائص الملف
cp -p config.conf /backup/

الإخراج:

TEXT
cp: overwrite '/backup/important.txt'? n

(9) ▶ مثال: نقل وإعادة تسمية

BASH
# إعادة تسمية ملف
mv old-report.md report-2026.md

# نقل إلى دليل آخر
mv report.md ~/Documents/reports/

# إعادة تسمية مجمّعة (باستخدام حلقة)
for f in *.html; do mv "$f" "${f%.html}.htm"; done

الإخراج:

TEXT
(لا مخرجات، تمت إعادة تسمية الملف)

(10) ▶ مثال: حذف آمن

TEXT
# الأمان أولًا: وضع تفاعلي
rm -i file.txt

# حذف دليل فارغ
rmdir empty-dir

# حذف دليل غير فارغ
rm -r old-project/

# استخدم بحذر (يحذف بدون سؤال)
rm -f temp.log

(11) ▶ مثال: عمليات مجمّعة بالرموز الشاملة

BASH
# نسخ كل ملفات .jpg
cp *.jpg ~/Pictures/

# حذف كل ملفات .tmp المؤقتة
rm *.tmp

# نقل الملفات التي تبدأ بـ2024
mv 2024* ~/archive/

# عرض الملفات التي تنتهي برقم
ls *[0-9]

الإخراج:

TEXT
report2024.md  log2025.txt  backup1.tar.gz

(12) ▶ مثال شامل: إنشاء هيكل دليل مشروع كامل

BASH
# شياو مينغ ينشئ مشروع مدونته (سطر واحد يفعل كل شيء)
mkdir -p myblog/{src/{css,js,img},docs,scripts,test}

# إنشاء ملف فهرس HTML تحت src
touch myblog/src/index.html

# نسخ كنسخة احتياطية
cp -r myblog myblog-backup

# إعادة تسمية دليل النسخة الاحتياطية
mv myblog-backup myblog-2026-07

# عرض الهيكل النهائي
find myblog -type f -o -type d | sort

❓ أسئلة شائعة

س: هل rm -rf / فعليًا يحذف النظام بالكامل؟ ج: \1

س: ما الفرق بين cp وmv عند العمل على الدلائل؟ ج: cp يتطلب علامة -r لنسخ الدلائل (بشكل متكرر). mv لا يحتاج — نقل دليل يستخدم نفس أمر نقل ملف. إذا الدليل الهدف غير موجود، mv يُعيد التسمية؛ إذا كان موجودًا، المصدر يُنقل داخله.

س: كيف أتعامل مع أسماء الملفات التي تحتوي مسافات؟ ج: \1

س: كيف أعيد تسمية الملفات بشكل مجمّع؟ ج: استخدم حلقة for: for f in *.jpg; do mv "$f" "prefix_$f"; done، أو أداة rename المخصصة: rename 's/\.jpg$/\.png/' *.jpg.

س: ماذا يحدث إذا حذفت الملف الأصلي لرابط رمزي؟ ج: الرابط الرمزي يصبح "رابطًا مقطوعًا" — ls -l سيُعرض اسمًا أحمر يومض، والوصول إليه سيعطي خطأ No such file or directory. الروابط الصلبة لا تتأثر (لأنها تشير مباشرة إلى inode الملف الأصلي).


📖 ملخص


📝 تمارين

  1. أساسي (صعوبة ⭐): استخدم mkdir -p لإنشاء شجرة الدلائل linux/assignments/{hw1,hw2,hw3}/{src,docs}، واستخدم توسيع الأقواس لإنشاء main.py في الدليل الفرعي src لكل hw
  2. متوسط (صعوبة ⭐⭐): انسخ hw3 كـhw4 وتحقق، ثم احذف hw1/src/main.py، واستخدم rm -r لحذف دليل hw2 بالكامل
  3. متقدم (صعوبة ⭐⭐⭐): أنشئ رابطًا رمزيًا يشير إلى /etc/hostname وتحقق منه، ثم اكتب سطرًا واحدًا باستخدام find لتحديد كل ملفات main.py التي أنشأتها وأعد تسميتها مجمّعًا إلى main.sh
Web-Tutorial.com

فريق Web-Tutorial التقني

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

100%