هذا شرح أمر rm بشكل شامل وموسع للمبتدئين وبنفس الطريقة، مع أمثلة كثيرة داخل بلوكات كود + أهم خيارات الأمان + أخطاء شائعة وتحذيرات ضرورية.
⚠️ تحذير مهم جدًا للمبتدئ:
أمرrmيحذف نهائيًا (غالبًا لا يذهب لسلة المحذوفات). لذلك استخدمه بحذر، ويفضّل دائمًا تبدأ بـrm -iأو تتأكد بـlsقبل الحذف.
1) ما هو أمر rm ولماذا نستخدمه؟
أمر rm اختصار لـ Remove
وظيفته: حذف الملفات، ويمكنه أيضًا حذف المجلدات (لكن يحتاج خيارات).
تستخدمه عندما تريد:
- حذف ملف لم تعد تحتاجه
- تنظيف مجلد من ملفات مؤقتة
- حذف مجلد كامل مع محتواه (بحذر)
2) الصيغة العامة (Syntax)
حذف ملف/ملفات
rm [OPTIONS] FILE...Bashحذف مجلد يحتاج خيار -r
rm -r [OPTIONS] DIRECTORYBash3) حذف ملف واحد (أبسط مثال)
cd ~/project
touch test1.txt
rm test1.txtBashتحقق:
ls -l test1.txtBashقد يظهر:
ls: cannot access 'test1.txt': No such file or directoryBash4) حذف عدة ملفات دفعة واحدة
cd ~/project
touch a.txt b.txt c.txt
rm a.txt b.txt c.txtBash5) حذف باستخدام نمط (Wildcards) مثل *
مثال حذف كل ملفات txt داخل المجلد الحالي:
rm *.txtBash⚠️ انتبه: هذا سيحذف كل الملفات المطابقة فورًا.
الأفضل قبلها تتأكد ماذا سينحذف:
ls *.txtBashثم احذف.
6) حذف المجلدات (Directories)
أ) لماذا rm folder لا يعمل؟
لو جربت:
rm mydirBashغالبًا يعطي:
rm: cannot remove 'mydir': Is a directoryBashب) حذف مجلد مع محتوياته: -r (Recursive)
mkdir -p ~/project/test_dir
touch ~/project/test_dir/file1.txt
rm -r ~/project/test_dirBash
-rيعني يحذف المجلد وكل ما بداخله (ملفات + مجلدات فرعية).
7) خيارات الأمان المهمة للمبتدئ
أ) -i يسألك قبل كل حذف (Interactive) ✅
ممتاز لتجنب الأخطاء:
rm -i file1.txtBashمثال سؤال:
rm: remove regular file 'file1.txt'? yBashب) -I (حماية وسط) ✅
يسألك مرة واحدة إذا الحذف كثير/مجلد:
rm -I *.log
rm -rI mydirBashمناسب إذا لا تريد أسئلة لكل ملف.
ج) -f حذف بالقوة بدون سؤال (Force) ⚠️
rm -f file1.txtBashد) الأكثر خطورة: rm -rf ⚠️⚠️
يحذف مجلد بالكامل بدون أي سؤال:
rm -rf ~/project/test_dirBashلا تستخدم
rm -rfإلا وأنت متأكد 100%.
8) عرض ما يحدث أثناء الحذف (Verbose)
بعض الأنظمة تدعم -v:
rm -v file1.txt
rm -rv mydirBash9) أفضل عادات قبل استخدام rm (مهم جدًا)
عادة 1: اعرض قبل أن تحذف
ls -laBashعادة 2: إذا ستستخدم wildcard اعرضه أولًا
ls ~/project/test_dir/*
rm ~/project/test_dir/*Bashعادة 3: استخدم -i في البداية
rm -i *.txtBash10) أمثلة عملية شائعة
أ) حذف ملف داخل مسار
rm ~/project/old_notes.txtBashب) حذف ملفات مؤقتة مثل .tmp
rm -i *.tmpBashج) حذف مجلد build أو dist (شائع في المشاريع)
rm -rI build
rm -rI distBash11) أخطاء شائعة وحلولها
أ) “No such file or directory”
يعني الملف غير موجود أو الاسم غلط.
✅ الحل:
ls
pwdBashب) “Is a directory”
أنت تحذف مجلد بدون -r.
✅ الحل:
rm -r folder_nameBashج) حذف ملفات مخفية بالنجمة *
الأمر:
rm *Bashلن يحذف الملفات المخفية مثل .env (لأنها تبدأ بنقطة).
لحذف المخفي تحتاج نمط مختلف (بحذر شديد):
rm -i .*Bash⚠️ هذا قد يلمس .. في بعض الحالات، لذلك لا أنصح به للمبتدئ.
الأفضل تحدد أسماء الملفات المخفية بالضبط:
rm -i .env .cachefileBash12) تدريب عملي آمن للمبتدئ (Practice)
نفّذ التدريب داخل مجلد تجريبي فقط:
cd ~/project
mkdir -p rm_practice/test_dir
touch rm_practice/test_dir/file1.txt rm_practice/test_dir/file2.txt rm_practice/test_dir/file3.txt
# 1) اعرض المحتويات
ls -l rm_practice/test_dir
# 2) احذف ملف واحد بأمان
rm -i rm_practice/test_dir/file1.txt
# 3) احذف ملفات متعددة
rm -i rm_practice/test_dir/file2.txt rm_practice/test_dir/file3.txt
# 4) احذف المجلد كامل (بسؤال واحد)
rm -rI rm_practice/test_dir
# 5) اعرض النتيجة
ls -l rm_practiceBashهل الشرح الأصلي كافي؟
هو جيد كبداية، لكن يحتاج توضيح وتصحيح نقطتين مهمتين:
- ليس دائمًا rm يسأل افتراضيًا — في كثير توزيعات لينكس
rmلا يسأل إلا إذا استخدمت-iأو عند alias مثلrm='rm -i'. - لازم نركز على عادات الأمان:
lsقبلrm, واستخدام-iأو-Iخصوصًا مع-r.