التعامل مع الشل سكربت
- ما هو الشل؟
- إنشاء أول شل سكربت
- مبادئ كتابة الشل سكربت
ما هو الشل؟
الشل ( Shell ) هو مفسّر للأوامر ( Interpreter ) مهمته ترجمة الأوامر التي يكتبها المستخدم إلى أوامر يمكن للنواة ( Kernel ) فهمها و تنفيذها.
هناك العديد من الشيلات في أنظمة لينكس و منها Bash
و Zsh
و Fish
إلخ.. و لكن Bash
هو الشل الافتراضي و الأكثر شيوعاً فيما بينها.
الكلمة Bash
هي اختصار للجملة Bourne Again Shell.
ما هو الشل سكربت؟
الشل سكربت ( Shell Script ) عبارة عن أي ملف نصي عادي يحتوي على سلسلة من الأوامر يمكن للشل تنفيذها واحداً تلو الآخر.
لماذا نستخدم الشل سكربت؟
لأتمتة المهام المتكررة ( Automation ) مثل النسخ الإحتياطي، تحديث النظام، تجهيز البيئات البرمجية، إدارة السيرفرات و غيرها. هذا الأمر يوفّر الكثير من الوقت و يقلل الأخطاء البشرية.
ملفات الشل التي هدفها أتمتة المهام يمكن جعلها تتنفذ مرة واحدة فقط و يمكن جعلها تتكرر بشكل تلقائي - بدون تدخل بشري - في أوقات محددة.
خطوات التعامل مع الشل
- إنشاء ملف إمتداده
.sh
لوضع الأوامر فيه. - فتح الملف بواسطة أي محرر نصوص مثل
nano
أوvim
أوleafpad
إلخ.. - كتابة الأوامر في الملف و ثم حفظه و الخروج منه.
- إعطاء الملف صلاحية التنفيذ بواسطة الأمر
chmod +x
حتى يكون بالإمكان تشغيله. - الآن أصبح بالإمكان تشغيل الملف كلما أردنا أن يتم تنفيذ الأوامر الموضوعة فيها.
ننصحك بمراجعة درس التعامل مع الملفات ففيه شرحنا كيفية فتح الملفات بواسطة محرر النصوص nano
بالإضافة إلى كيفية تعديلها و حفظها.
إنشاء أول شل سكربت
فيما يلي سنقوم بإنشاء شل بسيط و من ثم سنقوم بتنفيذه.
خطوات إنشاء الشل السكربت
1- فيما يلي قمنا بإنشاء ملف إسمه demo.sh
.
Linux Terminal
2- فيما يلي قمنا بفتح الملف demo.sh
بواسطة المحرر nano
.
Linux Terminal
3- قم بنسخ الكود التالي و إضافته كما هو في الملف demo.sh
.
معلومة: مهمة هذا الكود هي طباعة رسالة ترحيب و يليها التاريخ و الوقت الحالي فقط.
echo "Hello, World!" date
أثناء إضافة الكود في الملف demo.sh
فإنه سيبدو كما يلي.
Linux Terminal
echo "Hello, World!"
date
^G Help ^O Write Out ^W Where Is ^K Cut ^T Execute ^C Location M-U Undo
^X Exit ^R Read File ^\ Replace ^U Paste ^J Justify ^/ Go To Line M-E Redo
4- للخروج من المحرر (أي من الملف المفتوح فيه) أنقر على الزرين Ctrl + X.
5- الآن سيسألك إن كنت تريد حفظ التعديلات التي أجريتها، أكتب الحرف y ثم أنقر على الزر Enter.
جعل الشل السكربت قابل للتنفيذ
قم بإعطاء الملف demo.sh
صلاحية التنفيذ حتى تستطيع تشغيله.
Linux Terminal
تنفيذ الشل السكربت
يمكنك تشغيل الشل سكربت بكل بساطة من خلال ذكر إسمه أو المسار الموجود فيه كما يلي.
Linux Terminal
Hello, world!
Tue Apr 8 07:45:21 AM EEST 202
root@fedora:~$
يمكنك أيضاً استخدام الأمر bash
و تمرير إسم أو مسار الشل السكربت المراد تشغيله كما يلي.
Linux Terminal
Hello, world!
Tue Apr 8 07:45:21 AM EEST 202
root@fedora:~$
الطريقة الأولى في تشغيل الشل السكربت هي الأكثر شيوعاً فهي مختصرة و تعطي النتيجة ذاتها.
مبادئ كتابة الشل سكربت
قبل قليل تعلمنا كيفية إنشاء شل سكربت، إعطاؤه صلاحية التنفيذ و من ثم تشغيله.
الآن، سنتطرق إلى بعض مبادئ و قواعد كتابة الشل سكربت.
الشل هيدر
الشيل هيدر ( Shell Header ) هو السطر الأول الذي يوضع في البداية و الذي من خلاله يعرف نظام التشغيل أي مفسّر للكود يجب أن يستخدم عند تنفيذ الكود.
الآن، عندما يكون هدفك إعلام نظام التشغيل بأن عليه إستخدام المفسّر Bash
فإنه يجب وضع الأمر التالي في السطر الأول في الملف و قبل أي أمر آخر.
هذا السطر متعارف عليه في بإسم شي بانغ ( Shebang ) و البعض يقول له هاش بانغ ( Hashbang ) أيضاً.
أمر الطباعة في الشل سكربت
يمكنك استخدام الأمر echo
لطباعة أي شيء في موجه الأوامر.
مثال
echo "This is the best shell script tutorial"
نتيجة التشغيل
المتغيرات في الشل سكربت
يمكنك تعريف أي متغير من خلال استعمال إسم متاح و إسناد قيمة إليه.
للحصول على قيمة المتغير يمكنك وضع الرمز $
قبل إسمه أو وضعه بداخل ${}
.
مثال
"Mhamad" age = 30 echo "Hello, my name is ${name}." echo "I'm ${age} years old."name =
نتيجة التشغيل
I'm 30 years old.
يوجد متغيرات جاهزة في لينكس يمكنك استعمالها في كود الشل سكربت مثل $HOME
، $USER
، $PATH
إلخ..
مدخلات المستخدم في الشل سكربت
يمكنك استخدام الأمر read
لجعل مفسّر الكود ينتظر المستخدم ليدخل قيمة و من ثم يمكنك تخزينها في متغير.
مثال
echo "Enter your name: " read name; echo "Hello, ${name}!"
نتيجة التشغيل في حال قام المستخدم بإدخال النص Mhamad
أثناء التشغيل.
Hello, Mhamad!
جمل الشرط في الشل سكربت
يمكنك استخدام جمل الشرط if
، then
، elif
، fi
، else
، لتحديد الأوامر التي ستتنفذ بناءاً على شروط معينة.
مثال
if [ $age -ge 18 ]; then echo "You are an adult." elif [ $age -lt 13 ]; then echo "You are a child." else echo "You are a teenager." fiage=25
نتيجة التشغيل
فيما يلي شرح الكلمات المفتاحية و الرموز المستخدمة في الكود بالإضافة لرموز أخرى مهمة:
[ ]
_ الشرط يتم وضعه بداخل هذين الرمزين.if
_ هي جملة الشرط الأولى و يمكن وضع سلسلة شروط بعدها.elif
_ أي شرط إضافي نريد وضعه بعد الشرط نستخدم معه هذه الجملة.else
_ يتم تنفيذ الأوامر الموضوعة فيها إذا لم يتحقق أي شرط سابق.then
_ يوضع بعدها الأوامر المراد تنفيذها في حال تحقق الشرط الموضوع قبلها مباشرةً.-gt
_ رمز للمقارنة معناه أكبر من.-lt
_ رمز للمقارنة معناه أصغر من.-ge
_ رمز للمقارنة معناه أكبر أو يساوي.-le
_ رمز للمقارنة معناه أصغر أو يساوي.-eq
_ رمز للمقارنة معناه يساوي.-ne
_ رمز للمقارنة معناه لا يساوي.
هذه كانت بعض القواعد البسيطة في كتابة الشل سكربت، يمكنك البحث و التعلم أكثر حولها إذا كنت مهتماً بذلك 🙂