1) ما هو أمر du ولماذا نستخدمه؟
أمر du اختصار لـ Disk Usage
وظيفته: حساب مساحة التخزين التي تستهلكها الملفات والمجلدات.
متى يفيدك؟
- عندما تمتلئ المساحة وتريد تعرف “أكبر مجلد/ملف”
- معرفة حجم مشروع أو مجلد قبل نسخه/ضغطه
- فحص مجلدات مثل
Downloadsأوlogأوnode_modules
ملاحظة مهمة للمبتدئ:
duيقيس المساحة المستخدمة فعليًا على القرص (blocks) وليس بالضرورة “حجم الملف المنطقي” فقط.
2) الصيغة العامة (Syntax)
du [OPTIONS] [PATH]Bash- إذا لم تكتب PATH → يحسب للمجلد الحالي.
3) أهم الخيارات التي ستستخدمها دائمًا
-h عرض حجم مقروء (KB/MB/GB)
du -h .Bash-s ملخص (Summary) بدل تفصيل كل شيء
du -sh .Bashهذا أكثر أمر يستخدم يوميًا:
du -sh folder
-c إجمالي نهائي (Grand total)
du -ch *.logBash-d N تحديد عمق العرض (Depth)
du -h -d 1 .Bashيعرض حجم كل عنصر داخل المجلد الحالي (مستوى واحد).
-x لا تتجاوز أنظمة ملفات أخرى
مفيد لو عندك mount داخل مجلد:
du -hx -d 1 /Bash4) أمثلة عملية واضحة (مع مشروع)
أ) حجم مجلد معيّن (ملخص سريع)
du -sh ~/projectBashب) عرض أحجام العناصر داخل مجلد (level 1)
du -h -d 1 ~/projectBashهذا يساعدك تكتشف بسرعة أي مجلد أكبر.
5) إنشاء هيكل تجريبي (Practice) ثم قياسه
cd ~/project
mkdir -p du_demo/subdir1 du_demo/subdir2
dd if=/dev/zero of=du_demo/subdir1/bigfile.bin bs=1M count=5 2>/dev/null
dd if=/dev/zero of=du_demo/subdir2/medium.bin bs=1M count=2 2>/dev/null
touch du_demo/subdir2/small.txtBashالآن جرّب:
du -h -d 1 du_demo
du -sh du_demoBash6) كيف أطلع “أكبر 10 مجلدات/عناصر” بسرعة؟ (مهم جدًا)
هذا من أكثر الاستخدامات الواقعية:
du -h -d 1 ~/project | sort -hBashولأكبرها في النهاية:
du -h -d 1 ~/project | sort -h | tailBashأو مباشرة أكبر 10:
du -h -d 1 ~/project | sort -h | tail -n 10Bash
sort -hيفهم أحجام مثل K/M/G.
7) استثناء مجلدات من القياس (Exclude)
مفيد جدًا مع مشاريع فيها مجلدات كبيرة مثل node_modules أو .git.
استثناء مجلد واحد
du -h -d 2 --exclude=node_modules ~/projectBashاستثناء أكثر من نمط
du -h -d 2 --exclude=node_modules --exclude=.git --exclude="*.log" ~/projectBashاستثناء باستخدام pattern
du -h -d 2 --exclude="*.cache*" ~/projectBash8) فرق مهم: du vs ls -lh
ls -lh fileيعرض حجم الملف “المنطقي”.du -h fileيعرض المساحة المستخدمة على القرص (قد تختلف بسبب block size أو sparse files).
جرّب:
ls -lh du_demo/subdir1/bigfile.bin
du -h du_demo/subdir1/bigfile.binBash9) خيارات إضافية مفيدة (اختياري للمبتدئ)
عرض الحجم النهائي “الإجمالي” مع تفاصيل
du -h -d 1 -c ~/projectBashعرض الحجم بالميغابايت أو الكيلوبايت بشكل ثابت
du -BM -s ~/project
du -BK -s ~/projectBash10) أخطاء/ملاحظات شائعة
أ) لماذا ملفات فارغة تظهر 4.0K؟
لأن أنظمة الملفات تحفظ أقل “وحدة تخصيص” blocks (مثل 4KB).
حتى ملف 0 بايت قد يأخذ block metadata أو يظهر حد أدنى في du.
ب) “Permission denied”
إذا تقيس مسارات نظام مثل /root بدون صلاحية:
- استخدم
sudoلو مناسب:
sudo du -h -d 1 /varBash11) تدريب سريع (Practice)
نفذ التالي:
cd ~/project
# 1) حجم مجلد
du -sh du_demo
# 2) أحجام داخل المجلد (مستوى 1)
du -h -d 1 du_demo
# 3) استبعاد subdir1
du -h -d 1 --exclude=subdir1 du_demo
# 4) أكبر العناصر داخل du_demo
du -h -d 1 du_demo | sort -h
Bashهل الشرح الأصلي كافي؟
نعم كبداية جيدة، لكن إضافة مهمة للمبتدئ كانت:
- استخدام
du -shكأفضل أمر يومي - كيفية استخراج الأكبر باستخدام
sort -h | tail - الفرق بين
duوls -lh - استخدام
-xلمنع عبور file systems - أن الاستثناءات مفيدة جدًا في مشاريع حقيقية