بسم الله الرحمن الرحيم
أساسيات السكريبت(Script)
الساعة الثانية
في الفصل الأول " أساسيات الصدفة(shell) " قدمت لك مفهوم الصدفة وأوامرها وجعلتك ترى كيف بأمكان الصدفة قرأة ما تطبعه وتنفيذ ما تطلبه منها.
في هذا الفصل سأشرح لك ما الذي تحتويه الصدفة وكيف تعمل وسوف تتعلم كيف تبدأ الصدفة أثناء عملية الأتصال (login) وما الذي يحدث عند الخروج (logout).
بعد أن أوضح لكم هذا السلوك سأريكم كيف تجمعون الأوامر التي تنفذ بشكل تفاعلي لأنشاء ملف سكريبت. أن السكريبت هي القوة وراء الصدفة لأنها تمكنك من تجمبيع الأوامر سوية لخلق أوامر جديدة.
نظام اليونكس
نظام يونكس يشمل مكونين :
1- المرافقات
2 - النواة
المرافقات : هي برامج يمكن أن تطبع وتنفذ. البرامج مثل who و date الذي شاهدته في الفصل السابق عبارة عن أمثلة للمرافقات. أي برنامج يعرف يعتبر مرفق
الأوامر هي مختلفة بعض الشي عن المرافقات. المرفق يشير بالتعبير الى الأسم أما الأمر يشير الي اي تغير يحدثه المرفق في سلوكه.
أن النواة هي قلب نظام التشغيل يونكس فهي تساعدك على الوصول لأجزاء الحاسوب مع معالجة البيانات وتنفيذ الأوامر.
عندما تطفىء جهاز الحاسوب فأن كلا من النواة ومرفقاتها مخزنة في القرص الصلب للجهاز ولكن عندما تشغل الجهاز تحمل النواة من القرص الصلب الى الذاكرة فتبقى النواة في الذكرة الى أن تطفىء الجهاز.
المرافقات من ناحية أخرى تكون مخزنة على القرص وتحمل (loaded) الى الذكرة عند التنفيذ أي عندما نضغط انتر ويبدأ تنفيذ الأمر.
تحمل النواة الأمر who من القرص الصلب وتضعه في الذاكرة بعد ذلك تنفذ الأمر. عند نهاية تنفيذ البرنامج يبقى في ذاكرة الحاسوب لفترة قصيرة قبل أن يزال. وهذا يسمح للأوامر التي تستخدم بأن تنفذ بشكل أسرع. اعتبر ما الذي يحدث عندما تنفذ الأمر date ثلاث مرات :
كود:
$ date
Sun Dec 27 09:42:37 PST 1998
$ date
Sun Dec 27 09:42:38 PST 1998
$ date
Sun Dec 27 09:42:39 PST 1998
الأمر الأول سيحمل من القرص الصلب أم الأمرين الثاني والثالث سيبقيان بالذاكرة مما يسمح لهما بتنفيذ أسرع.
Logging Inعندما تتصل بنظام يونكس لأول مرة عادة ترى مطبوع على الشاشة كلمة Login.أنت بحاجة لطباعة أسمك مثلا وعندما تدخل أسمك تظهر لك كلمة أخرى وهي Password أي يطلب منك أدخال كلمة السر.........مثال
كود:
login: ranga
Password
:
بعد عملية الأتصال بأمكانك البحث عن معلوماتك عبر هذا الملف etc\passwd .......مثال :
لنفترض أن أدخلنا الأسم ranga لنرى في ملف etc\passwd كالأتي :
كود:
ranga:x:500:100:Sriranga Veeraraghavan:/home/ranga:/bin/bash
كما تقدم خلال هذا الكتاب..أنا سأوضح لكم المعلومات التي خزنت هنا.
ملاحظة : الى كل القرأ الذين لم يألفوا ملفات اليونكس أو اسم الملف مثل etc\passwd سوف يتم تغطيت هذا الموضوع في الفصل الثالث(العمل مع الملفات) والرابع (العمل مع من الكتاب سوف أناقش الملفات سريعا في هذا الدرس اي ملفات أنظمة التشغيل الأخرى ما فيه الكفاية لفهم الأمثلة.
اذا لم يحدث اتصال Login يصدر برنامج الأتصال رسالة الخطأ ويعرض لك كلمة Login أخرى.
نظام Solaris و FreeBSD .......صدفة Bourne shell
نظام HP-Unix ...............صدفة POSIX
نظام Linux ............صدفة Bourne Again Shell
تهيئة الصدفة Shell Initializationعندما ينفذ برنامج الأتصال Login في الصدفة. الصدفة لا تكون مهيئة وعندما لا تكون مهيئة. الباراميترات تتلطب من الصدفة أن تكون تعمل بشكل صحيح. تمر الصدفة بمرحلة تسمى التهيئة (setup) لبدء هذه الباراميترات. هذه العلمية التي تتضمن من الصدفة قرأة الملفات التالية:
/etc/profile
profile
حالما تقرأ الصدفة جميع الملفات تعود الى الأشارة $.
التفاعل مع الصدفات غير متفاعلة :
يعني بالنمط التفاعلي هو بأن الصدفة تقرأ ما تطبعه وتنفذ ما تحدده انت. هذا النمط يسمى تفاعلي لأن الصدفة تتفاعل مع المستخدم وهذا النمط مألوف لكثير من المستخدمين من عمل اتصال وتنفيذ الأوامر والخروج من الصدفة بأستخدامهم ل login و logout أو exit ........الخ
والصدفة يمكنها العمل في نمط غير تفاعلي أي لا تتفاعل مع المستخدم...فقط تقرأ الأوامر التي خزنت في الملف وعندما تصل الى نهاية الملف تزيله وبعد ذلك تخرج الصدفة وتعود الى الأشارة $ وهكذا.
كيف الأتصال(login) يبدأ بالصدفة
عندما نعمل login تبدأ الصدفة بالتنفيذ من هذا الامر :
/bin/sh
بأصدار هذا الأمر يضع الصدفة في الأمر التفاعلي قبل أصدار نفس الأمر في الأ شارة التالية $
$ /bin/sh
$
الأشارة $ تعرض لك الشيل في بدايته login وللخروج من البرنامج نطبع exit.
$ exit
$
كيف تبدأ الصدفة اللأتفاعلية
بأتباع الأتي:
$ /bin/sh filename
هنا filename اسم الملف الذي يحتوي على الأوامر للتنفيذ. على سبيل المثال who و date .
ضع الأمرين في ملف يدعى logins. أولا أفتح ملف logins في المحرر واطبع الامرين ولنفترض أن الملف مخزن في الدليل الحال bin/sh .............تستطيع تنفيذ الأمرين هكذا
bin/sh logins
هذا أول مثال على سكريبت الصدفة. أساسا سكريبت الصدفة هي قائمة من الأوامر مخزنة في ملف ةتنفذ بشكل غير تفاعلي.
محتويات ملف تهيئة : ملف تهيئة الصدفة عادة يكون صغيرا وصمم لتزويد بيئة عمل متكاملة للصدفات التفاعلية والغير تفاعلية.
الملف etc/profile مبيقة بواسطة مدير نظام يونكس ويحتوي على جميع طلبات الأوامر من قبل كل المستخدمين.
الملف profile تحت سيطرتك وتستطيع أن تضيف ما تشاء
أعدادت PATHعندما تطبع الأمر date $ على الصدفة أن تحدد مكان الأمر date قبل أن تنفذه. أن PATH يحدد المواقع التي يجب على الصدفة بحث الأوامر منها. وللتوضيح كالتالي :
PATH=/bin:/usr/bin
: هنا الأدلة..............والأدلة سنناقشها في الفصل الرابع.
اذا طلبت من الصدفة تنفيذ أمر ولم تجده في الأدلة سيعطيك المتغير PATH نفس الرسالة بعدم وجوده........مثال :
$ hello
hello: not found
أعدادات MANPATH
في اليونكس المساعده على الأنترنت كانت متوفرة من البداية. في قسم " الحصول على المساعد" التي سوف نصل اليه بعد قليل سأشرح لك كيفية الدخول بالأمر MAN
لكي تتمكن من الدخول لكل المساعدة المتوفرة يجب عليك أخبار الصدفة أين تبحث عن المساعدة صفحات الأنترنت. هذه المعلومات تستخدم MANPATH
MANPATH=/usr/man:/usr/share/man
عندما تستخدم الأمر man لطلب المساعدة على الأنترنت كالتالي يبحت لك الأمر man في جميع الأدلة.
$ man who
في هذه الحالة يبحث لك عن صفحة مساعده في الأنترنت حول الأمر who.
جعل سكريبت الصدفة قابلة للتنفيذ:
أحدى أهم المهام في كتاية سكريبت الصدفة هو جعل السكريبت قابل للتنفيذ. وفي مثالنا السابق أنشأنا ملف logins الذي نفذ الأوامر المركبة who و date
اذا كنت تريد أن تجعل سكريبت يعمل بطباعة الأسم يجب عليك عمل شيأين :
1- تجعل السكريبت قابل للتنفيذ.
2- التأكد من استخدام الصدفة الصحيحة
للتوضيح أكثر وهذا خارج عن مؤلف الكتاب(( لنفرض أنك قمت بطباعه البرنامج nmap ولم يعمل معك وربما تجده يعمل في صدفة أخرى في نظام أخر هذا دليل على انه غير موجود في الأول وموجود في الصدفة الثانيه)) هذا القصد من عمل السكريبت.
ولتتأكد من أن السكريبت قابل للتنفيذ اعمل الأتي :
chmod a+x ./logins
chmod سنناقشها في الفصل الخامس (معالجة خواص ملف) ليس الأن.
لنضمن أننا نستخدم الصدفة الصحيحة لتنفيذ سكريبت يجب أن نضيف الخط "السحري" التالي الى بداية السكريبت :
#!/bin/sh
سكريبتك له خطان :
#/bin/sh
date ; who ;
The Magic of #!/bin/sh
ال #!/bin/sh يجب أن يكون سطر أول سكريبت شيل عشان يتمكن sh من تشغيل السكريبت.
التعليقات Comment
الخط السحري الأول bin/sh/!# يقدم موضوع التعليقات. التعليقات تكون متضمنه في سكريبت الشيل لكن لا تنفذ.
في سكريبت الصدفة تبدأ التعليقات مع الأشارة # وكل شي بين # ونهاية الخط يعتبر مهملا في الصدفة .
مثل لغات البرمجة التعليقات مهملة لا تنفذ.(للتوضيح)
لوضع تعليق في السكريبت أمر سهل فقط افتح المحرر وضع أول شي الأشارة # مثال :
كود:
print out the date and who's logged on#
دعونا نفتح ملف logins ونضع هذا السطر في الملف ويصبح هكذا :
كود:
#!/bin/sh
# print out the date and who's logged on
date ; who ;
انظرو الى السطر الثاني هذا تعليق لا ينفذ.
ليس هناك تغير في ناتج الأخراج للسكريبت لأن التعليقات لا تأثر على المخرجات.
ويمكنك أضافة التعليقات الى الأمر مباشرة بوضعك الأشارة #..........مثال :
كود:
date ; who ; # execute the date and who commands
في حال كتابتك لسكريبت الصدفة تأكد من وضعك للتعليقات حول ما تعمله في حال أراد شخص أخر النظر الى سكريبتك.
الحصول على المساعدة Getting Help
للحصول على المعلومات حول الأوامر التي عرضت اثناء النقاش. هذه المعلومات متوفرة بأستعمال ميزة المساعدة عبر الأنترنت من اليونكس.
تأتي كل نسخة من اليونكس بمجموعة شاملة من المساعدات عبر الأنترنت تسمى الصفحات اليدوية (manual pages ) وتدعى احيانا اخرى ب(man pages). أن صفحات (man pages) تأتي موثوقة حول نظام يونكس وتحتوي على معلومات كاملة حول النواة والمرافق.
استخدام الأمر man :
للدخول الى صفحات (man pages) أنت بحاجة الى استخدام الأمر man كالتالي :
man command
command الأمر الذي تريد أن تبحث بعض المعلومات عنه.........مثال:
كود:
$ man uptime
ويعرض لنا من نظام Solaris الأتي :
كود:
User Commands uptime(1)
NAME
uptime - show how long the system has been up
SYNOPSIS
uptime
DESCRIPTION
The uptime command prints the current time, the length of
time the system has been up, and the average number of jobs
in the run queue over the last 1, 5 and 15 minutes. It is,
essentially, the first line of a w(1) command.
EXAMPLE
Below is an example of the output uptime provides:
example% uptime
10:47am up 27 day(s), 50 mins, 1 user, load average: 0.18, 0.26,
0.20
SEE ALSO
w(1), who(1), whodo(1M), attributes(5)
NOTES
who -b gives the time the system was last booted.
الخلاصة :في هذا الفصل وضحنا ما هي الصدفة وكيف تعمل ورأينا كيف عميلة الأتصال login تعمل ورأيت نمط الصدفة وهما
التفاعلي
واللاتفاعلي
في برمجة الصدفة الأستعمال غير تفاعلي مع الصدفة يجب أن يثير أهتمامك أكثر. هذا النمط يسمح لك بتحديد الأوامر داخل الملف وهو ينفذها لك عن طريف الصدفة.
ورأينا أيضا تفاصيل عن تهيئة الصدفة والحصول على المساعدة بواسطة الأمر man.
في الدرس القادم أن شاء الله سنتعرف على الملفات وكيفية أدراجها والنظر في محتواها ومعالجتها.
تم بحمد الل