تخطَّ إلى المحتوى

🐧 شرح Linux وسطر الأوامر

تحديث: Rust تدخل على أوامرك الأساسية (uutils)

الدرس 29 من 29· ⏱ 2 دقائق قراءة

المفاجأة: نفس الأمر، من برنامج مختلف تمامًا

كل أمر تعلّمته في هذا المسار — ls، cat، chmod، chown، sort، wc، head — كان طوال عقود يأتي من نفس المصدر: حزمة GNU Coreutils، مكتوبة بلغة C. لو فتحت خادم أوبنتو حديثًا اليوم وجرّبت أحد هذه الأوامر، قد يكون البرنامج الذي نفّذ الأمر فعليًّا غير ما تتوقّع.

من أين جاء هذا التغيير؟

مشروع uutils/coreutils هو إعادة كتابة لحزمة GNU Coreutils بلغة Rust، بهدف واجهة سطر أوامر مطابقة لكن بأمان ذاكرة أفضل. أوبنتو (Canonical) بدأت تجربته اختياريًّا في إصدار 25.10، ثم في أوبنتو 26.04 LTS (صدرت أبريل 2026) جعلته الافتراضي لعشرات الأوامر الأساسية بدل GNU.

💡 هذا التغيير خاص بأوبنتو حاليًا. على Fedora أو Debian أو Arch أو macOS، ما زالت أوامرك الأساسية من GNU كما تعرفها.

الاستثناءات: cp، mv، rm ما زالت GNU

ليس كل الأوامر انتقلت. بسبب ثغرات من نوع TOCTOU (time-of-check to time-of-use — فجوة زمنية بين فحص حالة ملف واستخدامه قد يستغلّها مهاجم) لم تُحلّ بعد في نسخة Rust، أوبنتو 26.04 LTS تركت cp وmv وrm تعمل من GNU حتى إشعار آخر، فيما أغلب الباقي (ls, cat, chmod, chown, sort, wc, head, وغيرها) أصبح من Rust افتراضيًّا.

GNU CoreutilsRust Coreutils (uutils)
اللغةCRust
الوضع في أوبنتو 26.04 LTSاستثناءات: cp, mv, rmالافتراضي لبقية الأوامر
التوافقالمرجع التاريخي لكل التوزيعاتيهدف للتطابق، لم يكتمل 100% بعد
التوزيعات الأخرىلا يزال الافتراضيتجريبي/غير مفعّل افتراضيًّا

كيف تعرف أي نسخة تعمل، وكيف ترجع لـ GNU؟

أوبنتو تُبقي النسختين مثبّتتين معًا خلال فترة الانتقال:

gnuls -la              # يشغّل نسخة GNU من ls مباشرة (بادئة gnu)
gnucat file.txt         # وكذلك لأي أمر آخر يبدأ بـ gnu

# رجوع كامل لكل الأوامر إلى GNU:
sudo apt install coreutils-from-gnu --allow-remove-essential

# أو الرجوع لاحقًا إلى نسخة Rust:
sudo apt install coreutils-from-uutils --allow-remove-essential

هل يكسر هذا سكربتاتك؟

نادرًا، لكن ليس مستحيلًا. uutils يهدف لتطابق كامل مع سلوك GNU، ولم يصل لذلك 100% بعد — ظهرت تقارير عن اختلافات طفيفة في أوامر مثل sort على أنظمة حقيقية بعد الترقية لأوبنتو 26.04. إذا كان سكربت إنتاج يعتمد على سلوك دقيق جدًّا لأمر معيّن (ترتيب sort الحرفي، رسائل خطأ محدّدة يقرأها سكربت آخر...) على خادم أوبنتو حديث، اختبره بعد أي ترقية توزيعة، أو استخدم بادئة gnu للتأكّد من السلوك الذي اعتدته.

🎯 التالي: مرجع أوامر Linux الكامل.

شرح تحديث: Rust تدخل على أوامرك الأساسية (uutils) — Linux وسطر الأوامر بالعربي
تحديث: Rust تدخل على أوامرك الأساسية (uutils)Linux وسطر الأوامر بالعربي · The Code Fix

📚 لمزيد من التعمّق في Linux وسطر الأوامر، راجِع صفحات دليل Linux الرسمية.

هل كان هذا الدرس مفيدًا؟