انتقل إلى المحتوى الرئيسي

اختبار الوحدة 6 - برمجة الشيل

تعليمات​

يحتوي هذا الاختبار على 30 سؤالاً متعدد الاختيارات للتحقق من فهمك للوحدة 6.

نصيحة: أجب عن كل سؤال قبل الكشف عن الإجابة. الإجابات مخفية مباشرة بعد كل سؤال.


السؤال 1​

ما هو الشيبانج القياسي لسكريبت Bash؟

عرض التفسير

الإجابة الصحيحة: #!/bin/bash

التفسير: الشيبانج #!/bin/bash يشير إلى أن السكريبت يجب أن يتم تنفيذه باستخدام Bash. يجب أن يكون في السطر الأول من السكريبت. مثال: #!/bin/bash متبوعًا بسطر فارغ ثم الكود.


السؤال 2​

كيف تجعل السكريبت قابلاً للتنفيذ؟

عرض التفسير

الإجابة الصحيحة: chmod +x script.sh

التفسير: chmod +x script.sh يضيف إذن التنفيذ للسكريبت. يمكن بعد ذلك تنفيذه باستخدام ./script.sh أو bash script.sh. chmod 755 script.sh يفعل نفس الشيء.


السؤال 3​

كيف تعلن عن متغير في Bash؟

عرض التفسير

الإجابة الصحيحة: var="valeur"

التفسير: في Bash، نعلن عن متغير باستخدام `var="valeur"` (بدون مسافات حول `=`). لاستخدام المتغير: `$var` أو `${var}`. لعرضه: `echo $var`.


السؤال 4​

ما الأمر الذي يسمح بجدولة مهمة متكررة في Linux؟

عرض التفسير

الإجابة الصحيحة: cron

التفسير: cron هو الخادم الذي ينفذ المهام المجدولة. crontab هو الأمر لإدارة مهام cron. يتم تعريف المهام في ملفات crontab بصيغة خاصة.


السؤال 5​

ما الأمر الذي يسمح بتحرير مهام cron لمستخدم؟

عرض التفسير

الإجابة الصحيحة: crontab -e

التفسير: crontab -e يفتح المحرر لتعديل مهام cron للمستخدم الحالي. crontab -l يسرد المهام، crontab -r يحذف جميع المهام. يتم تخزين المهام في /var/spool/cron/crontabs/username.


السؤال 6​

ما هي الصيغة الصحيحة لسطر crontab؟

عرض التفسير

الإجابة الصحيحة: minute heure jour mois jour-semaine commande

التفسير: صيغة crontab: minute heure jour mois jour-semaine commande. أمثلة: 0 * * * * (كل ساعة)، 0 0 * * * (منتصف الليل كل يوم)، */5 * * * * (كل 5 دقائق). أيام الأسبوع: 0-7 (0 و 7 = الأحد).


السؤال 7​

ما هي صيغة crontab التي تنفذ مهمة كل ساعة؟

عرض التفسير

الإجابة الصحيحة: 0 * * * *

التفسير: 0 * * * * يعني: الدقيقة 0 من كل ساعة، كل يوم، كل شهر، كل يوم من الأسبوع = كل ساعة في الدقيقة 0. 0 0 * * * = منتصف الليل كل يوم. * * * * * = كل دقيقة.


السؤال 8​

ما هي صيغة crontab التي تنفذ مهمة كل يوم عند منتصف الليل؟

عرض التفسير

الإجابة الصحيحة: 0 0 * * *

التفسير: 0 0 * * * يعني: الدقيقة 0، الساعة 0 (منتصف الليل)، كل يوم، كل شهر، كل يوم من الأسبوع = كل يوم عند منتصف الليل. هذا شائع جدًا للنسخ الاحتياطية اليومية.


السؤال 9​

ما هي الأوامر التي تسرد مهام cron لمستخدم؟

عرض التفسير

الإجابة الصحيحة: crontab -l

التفسير: crontab -l يسرد مهام cron للمستخدم الحالي. crontab -l -u username يسرد مهام مستخدم آخر (يتطلب صلاحيات root). crontab -e يحرر، crontab -r يحذف جميع المهام.


السؤال 10​

ما هي بنية التحكم التي تسمح بتنفيذ كود شرطي في Bash؟

عرض التفسير

الإجابة الصحيحة: if-then-else

التفسير: بنية if-then-else تسمح بتنفيذ كود شرطي. الصيغة: if [ condition ]; then commandes; else commandes; fi. مثال: if [ $var -eq 10 ]; then echo "Égal"; fi.


السؤال 11​

ما هي الحلقة التي تسمح بالتكرار على قائمة في Bash؟

عرض التفسير

الإجابة الصحيحة: for

التفسير: الحلقة for تسمح بالتكرار على قائمة. الصيغ: for var in liste; do commandes; done أو for ((i=1; i<=10; i++)); do commandes; done. مثال: for file in *.txt; do echo $file; done.


السؤال 12​

ما هي الحلقة التي تنفذ الكود طالما أن الشرط صحيح؟

عرض التفسير

الإجابة الصحيحة: while

التفسير: الحلقة while تنفذ الكود طالما أن الشرط صحيح. الصيغة: while [ condition ]; do commandes; done. until تفعل العكس (طالما أن الشرط خاطئ). احذر من الحلقات اللانهائية!


السؤال 13​

ما هي المتغير التي تحتوي على كود الإرجاع للأمر الأخير؟

عرض التفسير

الإجابة الصحيحة: $?

التفسير: $? تحتوي على كود الإرجاع للأمر الأخير. 0 = نجاح، غير صفر = خطأ. مثال: command; if [ $? -eq 0 ]; then echo "Succès"; fi. يمكن أيضًا استخدام مباشرة: if command; then ....


السؤال 14​

ما هي المتغير التي تحتوي على عدد الوسائط الممررة للسكريبت؟

عرض التفسير

الإجابة الصحيحة: $#

التفسير: $# تحتوي على عدد الوسائط الممررة للسكريبت. $1, $2, إلخ. تحتوي على الوسائط الفردية. $0 تحتوي على اسم السكريبت. $@ تحتوي على جميع الوسائط.


السؤال 15​

ما هي المتغير التي تحتوي على الوسيط الأول الممرر للسكريبت؟

عرض التفسير

الإجابة الصحيحة: $1

التفسير: $1 تحتوي على الوسيط الأول، $2 الثاني، إلخ. $0 تحتوي على اسم السكريبت. $@ تحتوي على جميع الوسائط. مثال: ./script.sh arg1 arg2 → $1="arg1", $2="arg2".


السؤال 16​

ما الأمر الذي يسمح بإنشاء دالة في Bash؟

عرض التفسير

الإجابة الصحيحة: function_name() suivi de commandes entre accolades

التفسير: الصيغة لإنشاء دالة: `function_name() { commandes; }` (مع الأقواس حول الأوامر). يمكن أيضًا استخدام `function function_name { commandes; }`. للاتصال: `function_name` أو `function_name arg1 arg2`. ملاحظة: الأقواس ضرورية لتحديد جسم الدالة.


السؤال 17​

ما هو الملف الذي يحتوي على مهام cron النظامية (لكل المستخدمين)؟

عرض التفسير

الإجابة الصحيحة: /etc/crontab

التفسير: /etc/crontab يحتوي على مهام cron النظامية. صيغة مشابهة ولكن مع حقل المستخدم: minute heure jour mois jour-semaine utilisateur commande. الدلائل /etc/cron.d/, /etc/cron.hourly/, /etc/cron.daily/, إلخ. تحتوي أيضًا على مهام نظامية.


السؤال 18​

ما هو الدليل الذي يحتوي على السكريبتات التي يتم تنفيذها يوميًا بواسطة cron؟

عرض التفسير

الإجابة الصحيحة: /etc/cron.daily

التفسير: /etc/cron.daily/ يحتوي على السكريبتات التي يتم تنفيذها يوميًا. مشابه: /etc/cron.hourly/, /etc/cron.weekly/, /etc/cron.monthly/. هذه السكريبتات يتم تنفيذها بواسطة anacron أو run-parts.


السؤال 19​

ما الأمر الذي يسمح باختبار ما إذا كان ملف موجودًا في Bash؟

عرض التفسير

الإجابة الصحيحة: [ -f fichier ] ou test -f fichier

التفسير: [ -f fichier ] يختبر ما إذا كان الملف موجودًا وهو ملف عادي. اختبارات أخرى: [ -d fichier ] (دليل)، [ -e fichier ] (موجود)، [ -r fichier ] (قابل للقراءة)، [ -w fichier ] (قابل للتعديل)، [ -x fichier ] (قابل للتنفيذ).


السؤال 20​

ما الأمر الذي يسمح بقراءة إدخال المستخدم في سكريبت Bash؟

عرض التفسير

الإجابة الصحيحة: read

التفسير: read variable يقرأ سطرًا من الإدخال القياسي ويخزنه في المتغير. أمثلة: read name, read -p "أدخل اسمك: " name (مع مطالبة)، read -s password (إخفاء الإدخال).


السؤال 21​

ما هي البنية التي تسمح باتخاذ خيار متعدد في Bash؟

عرض التفسير

الإجابة الصحيحة: case-esac

التفسير: case تسمح باتخاذ خيار متعدد. الصيغة: case $var in pattern1) commandes;; pattern2) commandes;; *) commandes;; esac. أكثر وضوحًا من عدة if-elif للعديد من الخيارات.


السؤال 22​

ما هي صيغة crontab التي تنفذ مهمة كل 5 دقائق؟

عرض التفسير

الإجابة الصحيحة: */5 * * * *

التفسير: */5 * * * * يعني كل 5 دقائق. */5 يعني "كل القيم القابلة للقسمة على 5". 5 * * * * = فقط في الدقيقة 5 من كل ساعة. 5,10,15 * * * * = في الدقائق 5، 10 و 15.


السؤال 23​

ما هي المتغير التي تحتوي على PID للعملية الحالية؟

عرض التفسير

الإجابة الصحيحة: $$

التفسير: $$ تحتوي على PID للعملية الشيل الحالية. مفيدة لإنشاء ملفات مؤقتة فريدة: tempfile="/tmp/script.$$". $PPID تحتوي على PID للعملية الأم.


السؤال 24​

ما الأمر الذي يسمح بإعادة توجيه مخرج الخطأ إلى ملف؟

عرض التفسير

الإجابة الصحيحة: command 2> error.log

التفسير: 2> يعيد توجيه مخرج الخطأ (stderr، ملف الوصف 2). > يعيد توجيه المخرج القياسي (stdout، ملف الوصف 1). 2>&1 يعيد توجيه stderr إلى stdout. &> يعيد توجيه كلاهما إلى ملف.


السؤال 25​

ما الأمر الذي يسمح بإعادة توجيه كل من المخرج القياسي والخطأ إلى ملف؟

عرض التفسير

الإجابة الصحيحة: command &> file ou command > file 2>&1

التفسير: command &> file يعيد توجيه stdout و stderr إلى الملف. يعادل command > file 2>&1. الترتيب مهم: 2>&1 يجب أن يأتي بعد > file لإعادة توجيه stderr إلى نفس المكان الذي يتم توجيه stdout إليه.


السؤال 26​

ما الأمر الذي يسمح بإنشاء مصفوفة (array) في Bash؟

عرض التفسير

الإجابة الصحيحة: array=(1 2 3)

التفسير: الصيغة لإنشاء مصفوفة: `array=(1 2 3)` أو `array=("un" "deux" "trois")`. للوصول: `${array[0]}`, `${array[1]}`, إلخ. `${array[@]}` تحتوي على جميع العناصر. `${#array[@]}` = عدد العناصر.


السؤال 27​

ما هي صيغة crontab التي تنفذ مهمة كل يوم اثنين في الساعة 9:00؟

عرض التفسير

الإجابة الصحيحة: 0 9 * * 1

التفسير: 0 9 * * 1 = الدقيقة 0، الساعة 9، كل يوم، كل شهر، الاثنين (1). أيام الأسبوع: 0 أو 7 = الأحد، 1 = الاثنين، 2 = الثلاثاء، ...، 6 = السبت.


السؤال 28​

ما الأمر الذي يسمح بالخروج من دالة مع قيمة إرجاع؟

عرض التفسير

الإجابة الصحيحة: return

التفسير: return تخرج من دالة مع كود إرجاع. return 0 = نجاح، return 1 = خطأ. exit يخرج من السكريبت بالكامل. break تخرج من حلقة. return بدون وسيط يعيد كود الأمر الأخير.


السؤال 29​

ما الأمر الذي يسمح بالخروج من سكريبت مع كود إرجاع؟

عرض التفسير

الإجابة الصحيحة: exit

التفسير: exit يخرج من السكريبت مع كود إرجاع. exit 0 = نجاح، exit 1 (أو أي غير صفر) = خطأ. إذا لم يتم تحديد كود، يستخدم كود الأمر الأخير. return يعمل فقط في الدوال.


السؤال 30​

ما الأمر الذي يسمح برؤية سجلات مهام cron على Ubuntu 24.04؟

عرض التفسير

الإجابة الصحيحة: journalctl -u cron ou grep CRON /var/log/syslog

التفسير: على Ubuntu 24.04، سجلات cron موجودة في سجلات systemd. journalctl -u cron يعرض سجلات خدمة cron. يمكن أيضًا البحث في /var/log/syslog: grep CRON /var/log/syslog. السجلات تظهر تنفيذات وأخطاء مهام cron.


نتيجة الاختبار​

تهانينا على إكمال اختبار الوحدة 6!

النتيجة:

  • 25-30 إجابة صحيحة: ممتاز! أنت تتقن برمجة Bash و cron.
  • 20-24 إجابة صحيحة: جيد جدًا! راجع المفاهيم التي واجهت فيها صعوبة.
  • 15-19 إجابة صحيحة: جيد! راجع الفصول حول البرمجة و cron.
  • أقل من 15: يُوصى بمراجعة الوحدة قبل المتابعة.

الخطوات التالية​

الآن بعد أن تحققت من معرفتك:

الوحدة 7: الشبكة والتكوين
المختبرات العملية: طبق البرمجة و cron مع مختبرات الوحدة 6


تم إنشاء الاختبار في: ديسمبر 2024 - تم اختباره على Ubuntu 24.04