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 للخروج.
الروابط الرمزية (Symlinks)
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 — مستوى متقدم.