## هوكس Zsh
بعد استكشاف موضوع “جعل Zsh يعرض إعدادات الوكيل قبل تشغيل أوامر الشبكة”، تعمقت أكثر في أدوات Zsh مع ChatGPT. إليك نظرة موجزة للإشارة إليها في المستقبل.
في Zsh، تسمح لك الخطافات (hooks) بتنفيذ وظائف مخصصة في نقاط محددة أثناء عمليات الصدفة (shell). بالإضافة إلى preexec
، يوفر Zsh عدة خطافات لتعزيز بيئتك:
1. precmd
- متى: قبل عرض الـ prompt.
- الاستخدام: تحديث الـ prompt أو تنفيذ عمليات تنظيف.
- مثال:
precmd() { echo "جاهز للأمر التالي!" }
2. chpwd
- متى: عند تغيير الدليل الحالي.
- الاستخدام: تحديث متغيرات البيئة أو تشغيل إجراءات بناءً على الدليل.
- مثال:
chpwd() { echo "تم التغيير إلى: $PWD" }
3. preexec_functions
& precmd_functions
- متى: مشابه لـ
preexec
وprecmd
ولكن يدعم وظائف متعددة. - الاستخدام: إرفاق إجراءات متعددة دون التجاوز على الخطافات الموجودة.
- مثال:
precmd_functions+=(additional_precmd) additional_precmd() { echo "مهمة إضافية قبل تنفيذ الأمر." }
4. TRAPDEBUG
- متى: بعد كل أمر، قبل عرض النتائج.
- الاستخدام: تصحيح الأخطاء، تسجيل الأوامر.
- مثال:
TRAPDEBUG() { echo "تم تنفيذ: $1" }
5. TRAPEXIT
- متى: عند خروج الشل.
- الاستخدام: مهام التنظيف أو عرض رسائل الخروج.
- مثال:
TRAPEXIT() { echo "وداعًا!" }
6. zle
Hooks
- متى: أثناء تحرير السطر.
- الاستخدام: تخصيص سلوك سطر الأوامر.
- مثال:
zle-line-init() { echo "جارٍ تحرير أمر جديد." } zle -N zle-line-init
7. خطافات التاريخ (zshaddhistory
, zshremovehistory
)
- متى: عند إضافة أو إزالة إدخالات التاريخ.
- الاستخدام: تصفية أو إدارة التاريخ.
- مثال:
zshaddhistory() { [[ $1 == *"secret"* ]] && return 1 return 0 }
8. periodic
- متى: على فترات محددة بواسطة
period
. - الاستخدام: فحوصات روتينية أو تحديثات.
- مثال:
periodic() { echo "جاري تنفيذ المهمة الدورية..." }
9. add-zsh-hook
- الغرض: إضافة الدوال إلى الخطافات بشكل آمن.
- الاستخدام: إضافة دوال متعددة دون الكتابة فوقها.
- مثال:
add-zsh-hook precmd another_precmd another_precmd() { echo "دالة precmd أخرى." }
ملخص
نظام الخطافات في Zsh متعدد الاستخدامات، مما يتيح الأتمتة والتخصيص:
preexec
: قبل تنفيذ الأمر.precmd
: قبل عرض المطالبة.chpwd
: عند تغيير الدليل.TRAPDEBUG
: بعد الأمر لأغراض التصحيح.TRAPEXIT
: عند خروج الشل.zle
Hooks: أثناء تحرير السطر.- History Hooks: إدارة سجل الأوامر.
periodic
: على فترات محددة.add-zsh-hook
: إضافة وظائف متعددة للـ hooks.
استخدام هذه الخطافات يمكن أن يعزز بشكل كبير تجربتك مع Zsh، مما يجعل واجهة الأوامر الخاصة بك أكثر كفاءة ومخصصة لسير عملك.