Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

التعامل مع الشل سكربت

  • ما هو الشل؟
  • إنشاء أول شل سكربت
  • مبادئ كتابة الشل سكربت

ما هو الشل؟

الشل ( Shell ) هو مفسّر للأوامر ( Interpreter ) مهمته ترجمة الأوامر التي يكتبها المستخدم إلى أوامر يمكن للنواة ( Kernel ) فهمها و تنفيذها.

هناك العديد من الشيلات في أنظمة لينكس و منها Bash و Zsh و Fish إلخ.. و لكن Bash هو الشل الافتراضي و الأكثر شيوعاً فيما بينها.

الكلمة Bash هي اختصار للجملة Bourne Again Shell.


ما هو الشل سكربت؟

الشل سكربت ( Shell Script ) عبارة عن أي ملف نصي عادي يحتوي على سلسلة من الأوامر يمكن للشل تنفيذها واحداً تلو الآخر.


لماذا نستخدم الشل سكربت؟

لأتمتة المهام المتكررة ( Automation ) مثل النسخ الإحتياطي، تحديث النظام، تجهيز البيئات البرمجية، إدارة السيرفرات و غيرها. هذا الأمر يوفّر الكثير من الوقت و يقلل الأخطاء البشرية.

ملفات الشل التي هدفها أتمتة المهام يمكن جعلها تتنفذ مرة واحدة فقط و يمكن جعلها تتكرر بشكل تلقائي - بدون تدخل بشري - في أوقات محددة.


خطوات التعامل مع الشل

  1. إنشاء ملف إمتداده .sh لوضع الأوامر فيه.
  2. فتح الملف بواسطة أي محرر نصوص مثل nano أو vim أو leafpad إلخ..
  3. كتابة الأوامر في الملف و ثم حفظه و الخروج منه.
  4. إعطاء الملف صلاحية التنفيذ بواسطة الأمر chmod +x حتى يكون بالإمكان تشغيله.
  5. الآن أصبح بالإمكان تشغيل الملف كلما أردنا أن يتم تنفيذ الأوامر الموضوعة فيها.

ننصحك بمراجعة درس التعامل مع الملفات ففيه شرحنا كيفية فتح الملفات بواسطة محرر النصوص nano بالإضافة إلى كيفية تعديلها و حفظها.

إنشاء أول شل سكربت

فيما يلي سنقوم بإنشاء شل بسيط و من ثم سنقوم بتنفيذه.


خطوات إنشاء الشل السكربت

1- فيما يلي قمنا بإنشاء ملف إسمه demo.sh.

Linux Terminal

root@fedora:~$ touch demo.sh

2- فيما يلي قمنا بفتح الملف demo.sh بواسطة المحرر nano.

Linux Terminal

root@fedora:~$ nano demo.sh

3- قم بنسخ الكود التالي و إضافته كما هو في الملف demo.sh.
معلومة: مهمة هذا الكود هي طباعة رسالة ترحيب و يليها التاريخ و الوقت الحالي فقط.

#!/bin/bash
echo "Hello, World!"
date

أثناء إضافة الكود في الملف demo.sh فإنه سيبدو كما يلي.

Linux Terminal

    GNU nano               demo.sh #!/bin/bash
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

root@fedora:~$ chmod +x demo.sh

تنفيذ الشل السكربت

يمكنك تشغيل الشل سكربت بكل بساطة من خلال ذكر إسمه أو المسار الموجود فيه كما يلي.

Linux Terminal

root@fedora:~$ demo.sh
Hello, world!
Tue Apr 8 07:45:21 AM EEST 202
root@fedora:~$

يمكنك أيضاً استخدام الأمر bash و تمرير إسم أو مسار الشل السكربت المراد تشغيله كما يلي.

Linux Terminal

root@fedora:~$ bash demo.sh
Hello, world!
Tue Apr 8 07:45:21 AM EEST 202
root@fedora:~$

الطريقة الأولى في تشغيل الشل السكربت هي الأكثر شيوعاً فهي مختصرة و تعطي النتيجة ذاتها.

مبادئ كتابة الشل سكربت

قبل قليل تعلمنا كيفية إنشاء شل سكربت، إعطاؤه صلاحية التنفيذ و من ثم تشغيله.
الآن، سنتطرق إلى بعض مبادئ و قواعد كتابة الشل سكربت.


الشل هيدر

الشيل هيدر ( Shell Header ) هو السطر الأول الذي يوضع في البداية و الذي من خلاله يعرف نظام التشغيل أي مفسّر للكود يجب أن يستخدم عند تنفيذ الكود.

الآن، عندما يكون هدفك إعلام نظام التشغيل بأن عليه إستخدام المفسّر Bash فإنه يجب وضع الأمر التالي في السطر الأول في الملف و قبل أي أمر آخر.

#!/bin/bash

هذا السطر متعارف عليه في بإسم شي بانغ ( Shebang ) و البعض يقول له هاش بانغ ( Hashbang ) أيضاً.


أمر الطباعة في الشل سكربت

يمكنك استخدام الأمر echo لطباعة أي شيء في موجه الأوامر.

مثال

#!/bin/bash
echo "This is the best shell script tutorial"

نتيجة التشغيل

This is the best shell script tutorial

المتغيرات في الشل سكربت

يمكنك تعريف أي متغير من خلال استعمال إسم متاح و إسناد قيمة إليه.
للحصول على قيمة المتغير يمكنك وضع الرمز $ قبل إسمه أو وضعه بداخل ${}.

مثال

#!/bin/bash

name = "Mhamad"
age = 30

echo "Hello, my name is ${name}."
echo "I'm ${age} years old."

نتيجة التشغيل

Hello, my name is Mhamad.
I'm 30 years old.

يوجد متغيرات جاهزة في لينكس يمكنك استعمالها في كود الشل سكربت مثل $HOME، $USER، $PATH إلخ..


مدخلات المستخدم في الشل سكربت

يمكنك استخدام الأمر read لجعل مفسّر الكود ينتظر المستخدم ليدخل قيمة و من ثم يمكنك تخزينها في متغير.

مثال

#!/bin/bash

echo "Enter your name: "
read name;

echo "Hello, ${name}!"

نتيجة التشغيل في حال قام المستخدم بإدخال النص Mhamad أثناء التشغيل.

Enter your name: Mhamad
Hello, Mhamad!

جمل الشرط في الشل سكربت

يمكنك استخدام جمل الشرط if، then، elif، fi، else، لتحديد الأوامر التي ستتنفذ بناءاً على شروط معينة.

مثال

#!/bin/bash

age=25

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."
fi

نتيجة التشغيل

You are an adult.

فيما يلي شرح الكلمات المفتاحية و الرموز المستخدمة في الكود بالإضافة لرموز أخرى مهمة:

  • [ ] _ الشرط يتم وضعه بداخل هذين الرمزين.
  • if _ هي جملة الشرط الأولى و يمكن وضع سلسلة شروط بعدها.
  • elif _ أي شرط إضافي نريد وضعه بعد الشرط نستخدم معه هذه الجملة.
  • else _ يتم تنفيذ الأوامر الموضوعة فيها إذا لم يتحقق أي شرط سابق.
  • then _ يوضع بعدها الأوامر المراد تنفيذها في حال تحقق الشرط الموضوع قبلها مباشرةً.
  • -gt _ رمز للمقارنة معناه أكبر من.
  • -lt _ رمز للمقارنة معناه أصغر من.
  • -ge _ رمز للمقارنة معناه أكبر أو يساوي.
  • -le _ رمز للمقارنة معناه أصغر أو يساوي.
  • -eq _ رمز للمقارنة معناه يساوي.
  • -ne _ رمز للمقارنة معناه لا يساوي.

هذه كانت بعض القواعد البسيطة في كتابة الشل سكربت، يمكنك البحث و التعلم أكثر حولها إذا كنت مهتماً بذلك 🙂