اختبار الوحدة 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