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

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

أوامر متقدّمة مفيدة

الدرس 22 من 27· ⏱ 3 دقائق قراءة· 🗓 آخر تحديث: ١٨ أكتوبر ٢٠٢٦

alias: اختصاراتك الخاصة

alias ll='ls -lah'
alias gs='git status'
alias ..='cd ..'
alias rm='rm -i'        # اسأل قبل الحذف دائمًا

الـ alias يعيش في الجلسة الحالية فقط. لتبقى، أضفها إلى ~/.bashrc ثم source ~/.bashrc. ولتشغيل الأمر الأصلي متجاوزًا الـ alias اكتب \rm أو command rm.

history: لا تكتب نفس الأمر مرّتين

history | tail -5     # آخر الأوامر
!!                    # كرّر آخر أمر
sudo !!               # كرّره بـ sudo: نسيتها في المرة الأولى
!42                   # نفّذ الأمر رقم 42 من السجلّ
!$                    # آخر وسيط في الأمر السابق
mkdir -p /tmp/new/project
cd !$                 # cd /tmp/new/project

وأهم من كلّ ذلك: Ctrl+R ثم اكتب جزءًا من الأمر، فيجد آخر أمر مطابق. اضغط Ctrl+R مجدّدًا للأقدم، وEnter للتنفيذ.

xargs: حوّل الأسطر إلى وسائط

بعض الأوامر لا تقرأ من stdin بل تحتاج الأسماء كوسائط (rm وchmod). xargs تأخذ أسطر المدخل وتمرّرها كوسائط:

cat urls.txt | xargs -n 1 curl -sO      # نزّل كل رابط في الملف، واحدًا تلو الآخر
cat urls.txt | xargs -P 4 -n 1 curl -sO # 4 تنزيلات بالتوازي

⚠️ الأسماء التي فيها مسافات

touch "my file.log" other.log
find . -name "*.log" | xargs ls          # ❌ ls: cannot access './my': No such file...
find . -name "*.log" -print0 | xargs -0 ls   # ✅

xargs تقسم المدخل عند أي مسافة، فيصبح my file.log اسمين: my وfile.log. مع rm هذا خطير: قد يحذف ملفًا اسمه my لم تقصده إطلاقًا. الحل: -print0 في find تفصل الأسماء بحرف الصفر (الحرف الوحيد الذي لا يمكن أن يكون في اسم ملف)، و-0 في xargs تفهم هذا الفاصل. وأبسط من ذلك غالبًا: find ... -delete أو find ... -exec cmd {} + بلا xargs إطلاقًا (درس البحث عن الملفات).

watch: كرّر أمرًا ولاحظ التغيير

watch -n 2 df -h                 # كل ثانيتين
watch -d 'ss -tn | wc -l'        # -d: ظلّل ما تغيّر

مفيد لمراقبة نسخ طويل، أو امتلاء قرص، أو عدد الاتصالات أثناء اختبار ضغط. Ctrl+C للخروج.

ln -s /opt/app/releases/v2.3 /opt/app/current   # current يشير إلى v2.3
ls -l /opt/app/current                          # current -> /opt/app/releases/v2.3
ln -sfn /opt/app/releases/v2.4 /opt/app/current # حوّل الإشارة لإصدار جديد

الرابط الرمزي "اختصار" يشير لمسار آخر. نمط نشر شائع: كل إصدار في مجلّده، والخادم يشغّل دائمًا current. النشر = تحويل الرابط، والتراجع = إعادته للسابق في لحظة. انتبه للترتيب: الهدف أولًا، ثم اسم الرابط. وإذا حُذف الهدف يبقى الرابط "مكسورًا" ويظهر بلون أحمر في ls.

اختصارات الطرفية

الاختصاريفعل
Tabإكمال تلقائي
Ctrl+Rبحث في السجلّ
Ctrl+A وCtrl+Eبداية السطر ونهايته
Ctrl+Wاحذف الكلمة السابقة
Ctrl+Uاحذف من المؤشّر لبداية السطر
Ctrl+Lنظّف الشاشة
Ctrl+Cأوقف الأمر الحالي
Ctrl+Dأنهِ الإدخال أو الجلسة

أخطاء شائعة

  • find | xargs rm مع أسماء فيها مسافات: يحذف ملفات خاطئة أو يفشل. استخدم -print0 | xargs -0 أو -delete.
  • !! بلا تفكير: يكرّر آخر أمر كما هو. إذا كان rm فاحذر. اضغط ↑ لترى الأمر قبل تنفيذه.
  • عكس ترتيب ln -s: الهدف أولًا ثم الرابط.
  • alias في سكربت: الـ aliases لا تعمل في السكربتات افتراضيًا؛ استخدم دالة أو الأمر الكامل.
  • كلمات سر في الأوامر: تُحفظ في ~/.bash_history. ضع مسافة قبل الأمر (يتجاهلها السجلّ إذا كان HISTCONTROL يتضمّن ignorespace، وهو الافتراضي في Ubuntu)، أو مرّرها عبر متغيّر بيئة أو ملف.

🎯 التالي: Bash Scripting — مستوى متقدم.

شرح أوامر متقدّمة مفيدة — Linux وسطر الأوامر بالعربي
أوامر متقدّمة مفيدة — Linux وسطر الأوامر بالعربي · The Code Fix

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

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