ماهو غلاف لينوكس (الشل shell)
تفهم الحاسبات لغة 0 و 1 (اللغة الثنائية). في الايام الاولي للحاسب كانت التعليمات تقدم للحاسب في هذه الصيغة طبعا لا نحتاج لقول كم هي صعبة للكثير منا في قراءتها وكتابتها. ولهذا لنظم التشغيل برنامج اسمه القشرة او shell. يقدم الشل اوامر مقروءة للبشر ويترجمها لصيغة تستطيع النواة قراءته
1 ما هو الشل؟
الشل هو برنامج للمستخدم او بيئة تقدم التفاعل للمستخدم
هو مفسر لغة الاوامر الذي ينفذ الاوامر التي قرأها من جهاز الادهال الرئيس (لوحة المفاتيح او ملف )
يبدء الشل في العمل عندما نفتح الكونسول (الطرفية)
خو طريقة سريعة لتشغيل المنافع (الادوات)
لا يعد الشل جزء من نواة النظام لكنه يستخدم النواة لتنفيذ البرامج وانشاء الملفات الخ
توجد عدة اغشية (شيل) متاحة علي لينوكس
• باش BASH (Born Again Shell) الاكثر شعبية في لينوكس وهو مفتوح المصدر
• CSH (C Shell) استخدامه شبيه بالصيغة المعتادة للعة C
• KSH (Korn Shell) انشأه ديفد كورن لمعامل بيل ويعد الشل الاساس لقشرة POSIX
• TCSH متطور لكنه متوافق تماما مع شل جامعة بيركلي CSH
يجب ان نتذكر ان كل الاغشية تقوم بنفس المهام لكن باوامر تختلف من احدها للاخر. في بيئة دوس MS-DOS يسمي الشل COMMAND.COM ورغم انه يستخدم لنفس المهام ولكنه ليس بقوة شل لينوكس
1.1 محث الشل
توجد عدة طرق للوصول للشل
• الطرفية يقدم سطح المكتب في لينوكس نظام دخول ذو واجهة رسومية. عند دخولك يمكنك يمكنك الوصول للشل بتشغيل XTerm بسط المكتب X او GTerm في جنوم او KTerm في كدي
• الاتصال باستخدام الشل المصدري SSH ستتصل بالشل مجرد دخولك علي السيرفر البعيد او محطة العمل
• استخدام الكونسول تتيح بعض نظم لينوكس دخول للواجخة النصية للنظام حيث تصبح في الشل بمجرد دخولك في الواجهة التصية
2 كيف اعرف اسم الشل علي جهازي
لتعرف كل الشل المتاحة علي حاسبك اكتب الامر التالي
cat /etc/shells
اذا وجد في ملف الشل اكثر من شل فستكتب في لائحة
3 واجهة سطر الاوامر
يتيح لنا الشل واجهة للينوكس تتيح لنا ادخال الاوامر مستخدمين لوحة المفاتيح. وهي ما يعرف بواجهة سطر الاوامر Command Line Interface CLI. لنعرف الشل الذي نستخدمه الان نكتب
echo $SHELL ps $$ ps –p $$
3.1 عمليات سطر الاوامر الاساسية
يمكن ان تستخدم التوفيقات التالية للمفاتيح لتحرير الاوامر
• CTRL+L لتنظيف الشاشة
• CTRL+W مسح الكلمة التي تبدا من موقع المشيرة
• CTRL+U تنظيف السطر
• مفتاح Up او Down مفاتيح التوجيه لتكرار الاوامر السابقة (تاريخ الاوامر)
• Tab الاكمال التلقائي للملفات والادلة واسماء الاوامر الخ
• CTRL+R البحث في الاوامر التي استخدمت سابقا
• CTRL+C الغاء تنفيذ الامر الحالي
• CTRL+T تبديل اخر حرفين قبل المشيرة
• CTRL+H مسح الحرف الذي يبدأ من المشيرة
3.2 تنفيذ الامر
لتنفيذ الامر قم بكتابته ثم اضغط Enter جرب مثلا امر معرفة التاريخ
date
سيعطيك النتيجة التالية
Thu Jul 19 13:03:53 PDT 2012
3.3 اكمال الملفات والاوامر
يقوم الشل بالاكمال التلقائي لاسما الملفات والاوامر باعطاء كل الاحتمالات الموجودة فلو مثلا كتبت sle ثم ضغط مفتاح tab مرتين فسيقوم الشل باكمالها لك لتصبح sleep. ولناخذ مثال لو كتبت ls /e ثم ضغت مفتاح Tab سيكمل لك الشل اسم الجلد /etc/ وهو اسم لمجلد سبدأ بالحرف /e
3.4 الحصول علي المساعدة
تأتي معظم الاوامر في لينوكس ومعها مستنداتها التوثيقية
ويمكن عرض هذه المستندات عبر الامر man او info مثلا
man date
او ملف المعلومات ل ls
info ls
كما تقبل العديد من الاوامر الخيار –help لتقديم المساعدة او اختصارا له –h
date --help date –h
فلسفة لينوكس
فلسفة لينوكس هي فلسفة لتطوير البرمجيات بنيت علي فلسفة قادة المطورين لنظام يونكس
• افعل شيئا واحدا باتقان : اكتب برنامج يقوم بامر واحد باتقان اكتب برامج لتعمل سويا. اكتب برنامج للتعامل مع النصوص لانها الواجهة العالمية
• كل شيء عبارة عن ملف: معاملة العتاد كملف يتيح سهولة الاستخدام والامان
• الصغير جميل
• خزن البيانات وهيئها في ملفات نصية مسطحة: الملفات النصية هي الواجهة العامة تتميز بسهولة الانشاء والتخزين والنقل لنظام اخر
• استخدم سكربات الشل لزيادة القوة والمنقولية: استخدم سكربت الشل لاتمتة المهام الدورية (قدرة العمل علي اكثر من نظام)
• اربط البرامج سويا لاكمال تنفيذ المهام: استخدم انابيب الشل والمرشحات لربط ادوات بسيطة تؤدي مهمة واحدة سويا
• اختر المنقولية علي الاداء
• حافظ عليها بسيطة Keep It Simple Stupid KISS
كيف نستخدم الشل
لاستخدام الشل نقوم بكتابة الاوامر. والبرنامج هو برنامج صمم لاداء مهمة محددة مثلا
ls clear cal date
اذا اقلع لينوكس في النمط النصي فيمكنك البدء باستخدام الشل مباشرة. اذا بدأت بالواجهة الرسومية مثل سطح مكتب عنوم او كدي فيمكنك فتح الشل من التطبيقات > الاكسسرس > الطرفية Applications >> Accessories >> Terminal
ويمكنك الانتقال الي الكونسول الافتراضية بالضغط علي CTRL+ALT+F1 من ثم كتابة اسم المستخدم وكلمة السر. وللعودة الي النمط الرسومي اضغط CTRL+F7
قد تحتاج لاضافة تطبيق الطرفية للوحة panel
1 استخدام الطرفية
تقدم لك طرفية لينوكس قوائم تتيح لنا سهولة التفاعل مع الشل مثل الباش. الشل ماهو الا عبارة عن برنامج يقاطع وينفذ الاوامر التي تكتبها في محث الاوامر. اذا شغلت طرفية غنوم او كدي او X سيشغل البرنامج الطرفية الافتراضية المحددة في نظامك. يمكنك اختيار شل اخري في اي لحظة. في هذه الدورة سنتعامل مع طرفية عنوم تحت نظام ابنتو
1.1 تهيئة برنامج طرفية غنوم
يمكن تهيئة طرفية عنوم يالكامل فيمكن ان تعرف الملف الجانبي profile والذي يتيح لك ضبط الخيارات التالية
• لون النص ولون الخلفية
• حجم الخط ونوعه (عائلته)
• عنوان النافذة والامر
• مخزن التمرير
• والكثير
1.2 كيف اعدل الملف الجانبي
لتعديل الملف الجانبي
من تعديل اختر الملف الجانبي الحالي Edit > Current Profile
اختر الملف الجانبي الذي تريده ثم اضغط زر تعديل Edit
ماهي برمجة الشل او Shell scripting
في العادة الشل تفاعلي مما يعني انه سيستقبل اوامر عبر لوحة المفاتيح وينفذها ولو خزنت مجموعة اوامر في ملف نصي واخبرت الشل ان ينفذ الملف النصي بدلا عن ادخال الاوامر فهذا ما يسمي ببرمجة الشل
يمكن تعريف سكربت الشل علي انها "مجموعة اوامر مخزنة في ملف نصي بسيط" وهو شبيه بالملف الدفعي في الدوس لكنه اقوي بالطبع. وبرمجة الشل واحدة من اساسيات البيئة البرمجية ليونكس ولينوكس
1 مكونات سكربت الشل
الكلمات المفتاحية: مثل if و else و do .. while
اوامر الشل: مثل pwd و test و echo
اوامر لينوس الثنائية: مثل w و who و free
ادوات معالجة النصوص: مثل grep و awk و cut
الدوال : لاضافة الافعال المتكررة سويا عبر الدوال مثلا الملف /etc/init.d/functions يحوي دوال تستخدم معظمها او كلها من قبل سكربات النظام
التحكم في سير البرنامج:بجمل مثل if ..then .. else او الحلقات
1.1 لكل سكربت هدف
* هدف خاص مثلا النسخ الاحتياطي لملفات النظام
* يتصرف مثل الامر بنفذ كل سكربت تماما مثله مثل الامر
* كود قابل للاستخدام يمكن تمديد سكربت الشل بمساعدة الاسكربات الموجودة. كما يمكن ان تستخدم ملفات الدوال لتخزيم المهام كثيرة الاستخدام
2 هل تعلم؟
• ان من يسمح لك بتنفيذ مختلف الاوامر بدون ان تحتاج لكتابة المسار الكامل لها حتي لو لم تكن في الدليل الحالي هو الشل
• ان من يسمح لك باستخدام المحارف * و ؟ هو الشل
• ان من يسمح لك باستخدام الاوامر التي كتبتها سابقا بدون الحوجة لكتابتها مرة اخري هو الشل
• ان من يقوم باعادة توجيه الادخال والاخراج والاخطاء هو الشل
لماذا برمجة الشل
تفيدك برمجة الشل في اتمتة العملات التي تقوم بها بشكل متكرر في محث الاوامر
1 لماذا برمجة الشل
• يمكن لسكربت الشل ان يستقبل المدخلات من المستخدم او يأخذها من ملف ويخرجها علي الشاشة
• عندما تجد نفسك تقوم بنفس المهام مرارا وتكرارا يجب علك ان تقوم ببرمجتها عبر الشل (اتمتة المهام المكررة)
o انشاء ادواتك الخاصة
o اتمتة ادخال الامر
o تخصيص المهام الادارية
o انشاء تطبيقات بسيطة
o عندما نتأكد من السكربت فستقل فرصة الخطأ اثناء اداء مهام اعداد الخدمات او ادارة النظام مثل مهمة اضافة مستخدم جديد
1.1 امثلة عملية للاماكن التي يحسن استخدام سكربت الشل فيها
• مراقبة نظام لينوكس
• النسخ الاحتياطي واخذ اللقطات
• النسخ الاحتياطي لقواعد البيانات كالاوراكل او MySQL
• انشاء نظام تنبيه يعتمد علي البريد الالكتروني
• معرفة اي عملية تأكل موارد الجهاز
• معرفة المساحة الحرة المتاحة من الذاكرة
• معرفة كل المستخمين المتصلين وماذا يفعلون
• معرفة اذا كانت كل الخدمات الشبكية المطلوبة تعمل ام لا. مثلا اذا فشل تشغيل متصفح الانترنت فارسل تحذير لمدير النظام عبر الرسائل القصيرة SMS او البريد الالكتروني
• معرفة الدخول الخاطيء اذا استمر من نفس العنوان IP فقم بحظره
• ادارة المستخدمين بسياسات الامان
• معرفة معلومات عن السيرفر المحلي او البعيد
• تهيئة الخادم مثل BIND (خادم DNS) لاضافة مدخلات المنطقة
برمجة الشل ممتعة لقيام باشياء طريفة مثل
• معرفة طقس اليوم
• تنزيل تغذيات RSS وعرضها بمجرد دخولك او في بريدك الالكتروني
• معرفة اسم ملف MP3 الذي تستمع له
• مراقبة انتهاء صلاحية اسم النطاق Domain يوم بيوم
1.2 المميزات
• سهولة الاستخدام
• سرعة التشغيل والتنقيح التفاعلي
• حفظ الزمن
• اتمتة مهام ادارة النظام
• يمكن تنفيذ سكربات الشل بدون اي مجخود اضافي تقريبا علي كل نظم التشغيل الحديثة UNIX, LINUX, BSD, Mac لانها لغة تفسيرية interrupted
1.3 العيوب
• مشكلة التوافقية في بعض المنصات
• بطء سرعة التنفيذ
• تشغل عملية جديدة مع كل تنفيذ لامر من اوامر الشل
2 اي شل سنستخدمه
سنستخدم باش شل Bash Shell
3 اهداف الدورة
بعد الانتهاء من هذه الدورة ستصبح قادرا علي
• معرفة اساسيات برمجة الشل في لينوكس
• كتابة سكربت شل واستخدامه لحفظ الزمن باسكرات الاتمتة
• تخصيص ملفات بد تشغيل شل
• انشاء ادوات nifty
• التحكم في مهامك الادارية كادارة مستخدمي لينوكس او مراقبة لينوكس الخ
اسئلة
ماهو الشل؟
هل الجمل التالية صحيحة ام خاطئة؟
• لينوكس هو تجميعة لبرامج وادوات ملصقة سويا باستخدم الشل باش
• يدير الشل البيانات و الملفات
• يدير الشل الشبكات والذاكرة والموارد الاخري
• تشغل نواة لينوكس البرامج وتحملها للذاكرة
• شل باش هو واجهة مستخدم متواضعة
• شل بورن Bourne يعرف ايضا بالاسم /bin/sh
• شل باش يعرف ايضا بالاسم /bin/bash او /usr/local/bin/bash
• شل سي C Shell يقدم اوامر شبيهة بلغة السي
• هناك القليل من الاوامر مدمجة في الشل
• تنظم ملفات الوندوز بشكل هرمي
• للاشارة لعدم ملفات بنفس الاسماء تحتاج لاستخدام البدائل wildcards
• تزيد البدائل من سرعة طباعة الاوامر
• الامر ls يستخدم لعرض الادلة
• الامر rmdir يمسح الادلة الفارغة فقط
• كل شيء في لينوكس عبارة عن ملف
• سيطلب منك الامر rm –i filename التأكيد قبل ان يقوم بالحذف
• يمكن للينوكس ان يشغل اكثر من برنامج بنفس الوقت
• شل باش هو عبارة عن برنامج
اكتب اسم الامر الذي سيعرض الملف علي الطرفية
اكتب امر يعرض كل الملفات التي تنتهي بالكلمة ‘.perl’ في ترتيب معكوس
اكتب الامر الذي يعرض البرامج التي تعمل الان
اكتب الامر الذي يعرض الملفات التي تنتظر دورها للطباعة
اكتب الامر الذي يحذف 3 ملفات (1.txt, 2.txt, 3.txt)
اكتب الامر الذي ننشيء به الدليل الفرعي المسمي foo في /tmp
اكتب الامر الذي يحذف الدليل foo
اكتب امر يقرأ كل خيارات الامر ls
