منهج نواة تقنية الجلسة السادسة

من ويكي أضِف
اذهب إلى التنقل اذهب إلى البحث

الهدف من الجلسة

  • التعرف علي مترجم سطر الأوامر Shell.
  • التعرف علي انواع ال shells / تاريخ تطورها.
  • التعرف علي وإكتساب مهارات تقنية الحروف البديلة Wild cards والإستبدال substitution في مترجم سطر الأوامر Shell.
  • التعرف علي وإكتساب مهارات تقنية توصيل مداخل ومخارج البرامج plumbing في مترجم سطر الأوامر Shell.
  • التعرف علي وإكتساب مهارات تقنية الأنابيب Pipes في مترجم سطر الأوامر Shell.
  • التعرض للأوامر والأدوات المختلفة وتجربتها وإكتشاف نتيجتها
  • تقييم الطرق والادوات المستخدمة
  • التعرض لمبدأ من مبادئ اللينكس "ضع القطع معًا وانجز المهمة"

محتوي الجلسة

  • مترجم سطر الأوامر Shell
  • الحروف البديلة Wildcards
  • توصيل المداخل والمخارج plumbing
  • الأنابيب Pipes

طريقة التقديم

مترجم سطر الأوامر Shell

يبدأ الميسر الجلسة بالأسئلة التالية: ١- ما هو مترجم سطر الأوامر shell؟ و فيم يستخدم؟

(إجابة إسترشادية) هى واجهة يستخدمها المستخدم لكتابة الأوامر. حيث تخفى تفاصيل نظام التشغيل الأساسي ويدير التفاصيل الفنية لواجهة نواة نظام التشغيل kernel

٢- انواع ال shells / تاريخ تطورها؟

3.1 sh
3.2 csh
3.3 ksh
3.4 tcsh
3.5 bash

الحروف البديلة Wildcards

١- يسأل الميسر المتدربين عن مل هى الحروف البديلة؟و فوائد إستحدامها؟

(إجابة إسترشادية) يمكن استخدام سطر الأوامر لتنفيذ إجراءات على أكثر من ملف في وقت واحد ، أو للعثور على جزء من عبارة في ملف نصي باستخدام الحروف البديلة.


٢- ثم يبدأ الميسر فى توضيع أهمية الحروف البديلة من خلال وضع أمثلة للتطبيق عليها؟

الأنماط الموحدة Globbing patterns

  • مطلوب فى هذا المثال عرض كل الملفات التى تنتهى بـ PNG. داخل مجلد ما:
ls -l *.PNG $

(إجابة إسترشادية) النجمة * - تطابق عدد صفرًا أو أكثر من تكرارات لأي محرف ما عدا النقطة "." .

  • مطلوب فى هذا المثال عرض كل الملفات التى تحمل إسم Dog أو Dom أو Dot داخل مجلد ما:
?ls -l Do

(إجابة إسترشادية) علامة الإستفهام ؟ - تطابق تكرارًا واحدًا لأي حرف. أو

[tmg]ls -l Do $ 

(إجابة إسترشادية) الأقواس المربعة [ ] - تطابق مع أي تكرار للمحرف داخل الأقواس المربعة.

التعابير النمطية Regular Expressions

  • مطلوب فى هذا المثال عرض كل النصوص التى تحتوى على كلمة داخل ملف ما:
grep mua /usr/share/dict/words $

(إجابة إسترشادية) أمر grep - يطابق كل سطر داخل ملف يحتوى على نص نمطى معين.

ملحوظة يمكن أستخدام ملف قياسي في أنظمة التشغيل الشبيهة بـ Unix، وهو ببساطة قائمة جديدة بكلمات القاموس محددة بسطر. يتم استخدامه ، على سبيل المثال ، من قبل برامج التدقيق الإملائي كـ /usr/share/dict/words .

  • مطلوب فى هذا المثال عرض كل النصوص التى تحتوى على dogt فى بداية السطر داخل ملف ما:
grep ^dogt /usr/share/dict/words $

(إجابة إسترشادية) علامة الإقحام ^ - يطابق كل سطر يبدأ بنمط معين.

  • مطلوب فى هذا المثال عرض كل النصوص التى تحتوى على achman فى نهاية السطر داخل ملف ما:
grep achman$ /usr/share/dict/words $

(إجابة إسترشادية) رمز الدولار $ - يطابق كل سطر يينتهى بنمط معين.

بالإضافة إلى النجمة * و الأقواس المربعة [ ] و غيرها من الانماط الأخرى يمكن تطبيق أمثلة أخرى.

توصيل المداخل والمخارج plumbing

  • يبدأ الميسر بسؤال المتدربين عن معنى مصطلح plumbing فى الطبيعى؟ وتوضيح مدى استخدام الفكرة لعامة لها داخل الـ shell.

المداخل والمخارج الإفتراضية Standard I/O

ثم يبدأ بشرط مفهوم توصيلات الافتراضية الثلاثة للبرامج و مناقشة تفاصيل كل منها.

(إجابة إسترشادية) معظم البرامج لها ٣ توصيلات إفتراضية ( stdin و stdout و stderr ).

  1. المدخل الإفتراضي للبرامج (stdin (0 و عادة ما يكون موصول بلوحة المفاتيح.
  2. المخرج الإفتراضي للبرامج (stdout (1 و عادة ما يكون موصول بالشاشة.
  3. المخرج الإفتراضي للأخطاء (stderr (2 و عادة ما يكون موصول بالشاشة.
  • يمكن للميسر توضيح الفكرة بفتح نافذة سطر الأوامر شرح أمثلة:
cat $

(إجابة إسترشادية) بكتابة أمر cat يتمكن المستخدم من من كتابة نص باستخدام لوحة المفاتيح و عند الضغط على زر الإدخال يتم عرض النص المكتوب على الشاشة. وعلى هذا المثال يمكن للميسر سؤال المتدربين عن الوصلات الافتراضية لبرنامج الـ cat فى هذه الحالة؟

إعادة التوجيه Redirection

  • ثم يسأل الميسر أيوجد طرق لتغير تلك الوصلات الافتراضية؟ و ما الحالات التى تدعى تغيير وصلة افتراضية معينة لبرنامج معين؟

(إجابة إسترشادية) يمكن فعلا من تغيير الوصلات الافتراضية للبرامج بل عمل وصلات جديدة عن طريق استخدام إعادة التوجيه redirection.

  • يستكمل الميسر شرحه بأمثلة على الحالات التى تدعى تغيير وصلة افتراضية معينة لبرنامج معين:
  • مطلوب فى هذا المثال عرض محتويات مجلد ما داخل ملف معين:
ls -lai courses > courses.txt $

(إجابة إسترشادية) علامة الأكبر من < : تستخدم لتغيير المخرج لبرنامج الإفتراضى stdout إلى ملف معين. فبدلا من عرضه على الشاشة تم عرضه داخل ملف.

  • مطلوب فى هذا المثال عرض محتويات ملف ما على الشاشة:
cat < courses.txt $

أو

cat courses.txt $

(إجابة إسترشادية) علامة الأصغر من > : تستخدم لتغيير المدخل لبرنامج الإفتراضى stdin لبرنامج معين. (ملحوظة) الحلان يعطيان نفس النتيجة فكما موضح فى الحل الثانى أن أمر cat تستخدم إعادة التوجيه بصفة إفتراضية.

  • مطلوب فى هذا المثال عرض رسالة خطأ فى ملف أخر إذا ما حدث خطأ:
ls -lai courses 2> errors.txt $

(إجابة إسترشادية) علامة <2 : تستخدم لتغيير مخرج لبرنامج الإفتراضى stderr إلى ملف معين.

ثم يقوم الميسر بوضح مثال عالى المستوى لحث المتدربين على البحث للوصول لإجابات مختلفة إن أمكن. مثلا:

  • مطلوب فى هذا المثال عرض محتويات مجلد ما داخل ملف معين دون مسح البيانات الوجودة داخل الملف و عرض رسالة خطأ فى ملف أخر إذا ما حدث خطأ:

حل توضيحى:

ls -ail Templates/ >> app.txt 2>> err.txt $

الأنابيب Pipes

يبدأ الميسر بسؤال المتدربين عن الأنابيب Pipes؟و مدى إرتباطها بجزئية الـ plumbing؟

الأنابيب المبهمة Anonymous Pipes

(إجابة إسترشادية) الأنابيب هو أمر في shell يتيح لك استخدام برنامجان أو أكثر بحيث يكون مخرج أحد البرامج بمثابة مدخل للبرنامج التالي. باختصار ، ناتج كل عملية مباشرة كمدخل للعملية التالية مثل خط الأنابيب pipeline. يمكن للميسر التوضيح بمثال:

cat sample | grep -v a | sort - r $

(إجابة إسترشادية) ناتج تنفيذ أمر cat يكون بمثابة مُدخل لأمر grep و يصبح ناتج الأمر مُدخل لأمر sort.

الأنابيب المسماه (FIFO) Named Pipes

(إجابة إسترشادية) هو ملف خاص مشابه للأنبوب ولكن له اسم على نظام الملفات. يمكن لعمليات متعددة الوصول إلى هذا الملف الخاص للقراءة والكتابة مثل أي ملف عادي و الاسم يعمل فقط كنقطة مرجعية للعمليات التي تحتاج إلى استخدام اسم في نظام الملفات.و لها نفس الخصائص مثل أي ملف آخر كما يوفر اتصالًا ثنائي الاتجاه. ويكمن خلق ملف FIFO باستخدام الأمر التالى:

mkfifo pipe1 $