كتابة وتنقيح برامج Bash

من موسوعة حسوب
< Bash
مراجعة 00:18، 31 يوليو 2018 بواسطة أسامه-دمراني (نقاش | مساهمات) (إضافة محتوى على ما أُدخِل.)
اذهب إلى التنقل اذهب إلى البحث


الكتابة والتسمية

إن كان لديك سلسلة أوامر تنفذها بشكل متكرر وتريد اختصار وقت تنفيذها أو تنفيذها بشكل آلي، فيمكنك وضعها في ملف فارغ يكتب بصيغة معينة وتقرؤه الصدفة على أنه برنامج تنفذه عند استدعاءه بكتابة اسم الملف الذي يحويه، وتسمى تلك البرامج ببرامج الصدفة أو شيفرات الصدفة النصية (Shell Scripts).

ويمكن استخدام تلك البرامج لأتمتة المهام باستخدام أداة cron أو في إجراءات الإقلاع وإيقاف التشغيل في أنظمة يونكس، حيث يُحدَّد أسلوب عمل العفاريت (daemons) والخدمات في شيفرات init النصية (init scripts).

ولإنشاء برنامج للصدفة، افتح ملفًا فارغًا في المحرر النصي الذي تفضله، إذ لا يهم هنا نوع المحرر الذي تستخدمه فأغلبها يقوم بالمهمة التي نريدها الآن، وهي كتابة برنامج لصدفة bash، فاستخدم ViM إن شئت أو emacs أو gedit أو dtpad أو غير ذلك.

لكن ما قد يجعلك تستخدم محررًا متطورًا مثل ViM أو emacs على ما سواهما هو أنه يمكنك تهيئتهما للتعرف على النصوص التي تكتبها وإبرازها بألوان مختلفة -ومن ذلك نصوص وأوامر الصدفة التي سنكتبها-، وذلك يقلل الأخطاء التي يقع فيها المبتدئون عادة مثل إغفال إغلاق قوسين () أو نسيان الفواصل المنقوطة ; .

إبراز النصوص في ViM

استخدم أحد الأوامر الثلاثة التالية من أجل إبراز النصوص (Text Highlighting) في محرر ViM:

syntax enable: أو sy enable: أو syn enable:

من المفيد إضافة ذلك الإعداد إلى ملف vimrc. من أجل تقبيته كإعداد افتراضي.

ضع أوامر يونكس في الملف الذي أنشأته كما لو كنت ستكتب تلك الأوامر في سطر الأوامر (انظر تنفيذ الأوامر في Bash). يمكن أن تكون تلك الأوامر دوال للصدفة أو أوامر مضمَّنة فيها أو أوامر يونكس أو غير ذلك. والآن أعط ذلك الملف اسمًا يصف المهام التي ينفذها وتأكد ألا يتعارض الاسم مع أوامر موجودة مسبقًا، ولضمان ذلك فإن أسماء برامج الصدفة تنتهي غالبًا بـ sh.، لكن هذا لا يمنع وجود شيفرات نصية أخرى في النظام بنفس الاسم الذي تختاره، فابحث في النظام عن ملفات أو شيفرات نصية بنفس الاسم باستخدام أوامر البحث في الملفات والبرامج مثل which أو whereis:

which -a script_name

whereis script_name

locate script_name

script1.sh

سنستخدم في هذا المثال أمر echo لطباعة إشعارات على الشاشة تخبر المستخدم بما سيحدث قبل أن تُنفّذ كل مهمة، ذلك أن من المهم إخبار المستخدم بما يجري لتجنب فزع المستخدم بسبب أنه يشعر أن البرنامج "لا يفعل أي شيء". انظر تفصيل إشعار المستخدم في كتابة برامج Bash تفاعلية.

شكل 2.1: script1.sh

ربما يجب أن تدرب نفسك على كتابة برامج للصدفة بكتابة هذا المثال في الصورة بنفسك، كذلك من المفيد إنشاء مجلد scripts/~ لحفظ شيفراتك النصية فيه. أضف ذلك المجلد إلى محتويات متغير PATH كما يلي:

export PATH="$PATH:~/scripts"

استخدم محررًا يدعم إبراز النصوص لأوامر الصدفة إن كنت مبتدئًا، وتلك الخاصية مدعومة في محررات مثل vim - gvim - (x)emacs- kwrite إضافة