ملخص كتابة سكربت باش - Bash Shell Script Cheatsheet
سكربت صدفة باش (Bash) تجدها في أنظمة يونكس ، و لينكس ، و ماك. وتستطيع أيضاً تثبيت باش في لينكس داخل نظام ويندوز أيضاً.
أول سطر في أي سكربت مكتوب بلغة باش يبدأ بهذا السطر #! /bin/bash لأن برنامج تشغيل باش موجود في المسار /bin/bash. للتأكد من مسار باش ، استخدم هذا الأمر which bash.
طباعة المعلومات على الشاشة 🔗
تستطيع استخدام echo Hello, World! أو echo "Hello, world!".
المتغيرات وطباعتهم على الشاشة 🔗
NAME = "Abanoub"
echo "My name is $NAME"
أو استخدم هذه الطريقة
NAME = "Abanoub"
echo "My name is ${NAME}"
طلب المعلومات من المستخدم 🔗
read -p "Enter your name: " NAME
echo "Hello, $NAME!"
If Statement | الشرط 🔗
أبسط شكل للشرط في سكربت باش:
if ["$NAME" == "Abanoub"]
then
    echo "Yourname is Abanoub!"
fi
لاحظ أن نهاية if هي fi وهي عكس حروف if.
تحديد ماذا يحدث إن لم يتحقق الشرط عن طريق if else في سكربت باش:
if ["$NAME" == "Abanoub"]
then
    echo "Yourname is Abanoub!"
else
    echo "Yourname is NOT Abanoub"
fi
استخدام شرط ثم شرط آخر عن طريق else if (elif) في سكربت باش:
if ["$NAME" == "Abanoub"]
then
    echo "Yourname is Abanoub!"
elif ["$NAME" == "Jack"]
then
    echo "Yourname is Jack!"
else
    echo "Yourname is NOT Abanoub NOR Jack!"
fi
المقارنات المنطقية 🔗
يُمكنك استخدام هذه هذه المعاملات المنطقية للمقارنة:
| المعامل المنطقي - Logic Operator | Meaning - المعني | 
|---|---|
| -eq | equal to (يساوي) (the same meaning of == in other programming languages) | 
| -ne | not equal (لا يساوي) (the same meaning of != in other programming languages) | 
| -gt | greater then (أكبر من) (the same meaning of > in other programming languages) | 
| -ge | greater than or equal to (أكبر من أو يساوي) (the same meaning of >= in other programming languages) | 
| -lt | less than (أقل من) (the same meaning of < in other programming languages) | 
| -le | less than or equal to (أقل من أو يساوي) (the same meaning of <= in other programming language) | 
واستخدمهم بهذا الشكل:
NUM1 = 3
NUM2 = 5
if ["$NUM!" -gt "$NUM2"]
then
    echo "$NUM1 is greater then $NUM2"
fi
شروط التحقق من حالات الملفات أو نوعيتها 🔗
هناك أعلام للمقارنة خاصة بتحديد حالة الملف أو نوعيته (file condition flags):
| الرمز - symbol | المعني - meaning | 
|---|---|
| -d | is directory? (هل مجلد؟) | 
| -e | exists? (موجود؟) (usually we use -finstead) | 
| -f | a file? (ملف ؟) | 
| -g | is group id set? | 
| -r | readable? (قابل للقراءة؟) | 
| -s | non-zero size? (مساحة الملف غير صفرية؟) | 
| -u | user id is set? | 
| -w | writable? (قابل للكتابة والتعديل ؟) | 
| -x | executable? (قابل للتشغيل؟) | 
واستخدامهم بهذا الشكل:
FILE = "test.txt"
if [ -f "$FILE" ]
then
    echo "$FILE is a file"
else
    echo "$FILE is NOT a file"
fi
Case Statement - التعامل مع الحالات المختلفة 🔗
Case تُسمَّى switch case في اللغات الأخرى, وبعض اللغات الأخرى الحديثة تُسميها when case مثل لغة كوتلن.
إليك طريقة التعامل مع الحالات المختلفة لمتغير واحد في لغة باش:
read -p "Are you 25? Y/N" ANSWER
case "$ANSWER" in
    [yY]|[yY][eE][sS])
        echo "Your age is mine :)"
        ;;
    [nN]|[nN][oO])
        echo "Nooo, your age is different than mine :("
        ;;
    *)
        echo "Please enter y/yes or n/no"
        ;;
    esac
لاحظ أن:
[nN] هي طريقة لإعطاء إحتمالين للحرف الواحد؛ إما الحرف الصغير n أو الحرف الكبير N.
[yY][eE][sS] هي كلمة yes أو YES أو أي مزيج من الحروف الكبيرة والصغيرة مثل كلمة YeS.
*) هذه هي الحالة الإفتراضية أو الحالة الأخيرة الغير محددة للمتغير (default).
esac هي كلمة الإغلاق كود الـ case حيث أنها عكس حروفها.
For Loop | التكرار 🔗
NAMES = "Abanoub Jack John Smith"
for NAME in $NAMES
    do
    echo "Hello, $NAME"
done
إليك سكربت لإعادة تسمية كل الملفات النصية *.txt مرةً واحدة بلغة باش:
FILES = $(ls *.txt)
NEW = "new"
for FILE in $FILES
    do
    echo "Renaming $FILE to new-$FILE"
    mv $FILE $NEW-$FILE
done
While Loop | التكرار 🔗
إليك طريقة كتابة كود تكرار بإستخدام while لقراءة ملف nfile.txt سطر بسطر.
LINE = 1
while read -r CURRENT_LINE
    do
    echo "$LINE: $CURRENT_LINE"
    ((LINE++))
done < "./nfile.txt"
Bash Script Function Syntax | طريقة كتابة دالة - فانكشن 🔗
function sayHello(){
    echo "Hello, World!"
}
sayHello
كتبنا دالة لطباعة عبارة Hello, World! واستدعيناها ليتم تنفيذ الكود.
Bash Script Functions with Parameters | دالة بمتغيرات 🔗
هذه هي طريقة كتابة دالة بمتغيرات (params) في NAMES = "Abanoub Jack John Smith" لغة باش :
function greet(){
    echo "Hello, I am $1 and I am $2"
}
greet "Abanoub" "30"
الرمز $1 هو أول متغير داخل للدالة (parameter), و $2 هو ثاني متغير داخل للدالة. لذلك عند استدعاء الدالة أو الفانكشن لابد من كتابة هذه المتغيرات بالترتيب بهذا الشكل greet "Abanoub" "30". وهذا يعني أن "Abanoub" هو المتغير الأول (param) $1 و "30" هو المتغير الثاني (param) $2.
نصيحة أخيرة 🔗
أنت الآن قد تعلمت طريقة كتابة لغة باش، عليك أنت تتعلم الآن أوامر باش. سأحاول شرحها فيما بعد.