6.8 تمارين الباب السادس كتاب لينكس الشامل >>

6.8 تمارين الباب السادس

هذه مجموعة من الأسئلة الأساسية حول فصول الباب السادس.يفترض أن تتمكن من الإجابة عليها بمجرد قراءة هذا الباب.

  1. اختر الإجابة الصحيحة:
    1. واحدة من التالية ليست صحيحة بخصوص '#' :
      1. تحدد المفسر shell إذا تبعت بعلامة '!'
      2. تحول السطر إلى تعليق إذا بدأ بعلامة '#'
      3. تكمل بقية السطر كما 'echo "woo" # display woo'
      4. تعليق حتى لو كان كان داخل علامة تنصيص echo "I'm \#1"
    2. برنامج يبدأ ب #!/usr/bin/env wish فإنه مكتوب بلغة
      1. wish
      2. env
      3. tcl
      4. sh
    3. واحد من التالية لا يجمع 'x' مع 'y':
      1. expr $x+$y
      2. echo (( $x+$y ))
      3. echo $(( x+y ))
      4. echo $(( $x+$y ))
      5. (a) و (b)
    4. إذا كتبت النص التنفيذي 'Hello, world!' التقليدي ، وعندما نفذته حصلت على 'permission denided' فإن هذا يعني :
      1. فقط الجذر يمكنه تشغيله ، عليك استعمال 'su'
      2. غيّر اسم الملف لينتهي ب '.sh'
      3. غيّر الأذونات إلى 755.
      4. غيّر مالك الملف.
    5. مخرجات 'grep -q vfat /etc/fstab; echo $?' هي
      1. معرّف PID لبرنامج grep
      2. 0 فقط إذا وجد vfat
      3. 0 إذا لم يجد vfat.
      4. 3، عدد معاملات grep
    6. إذا كان 'x=15.2' و 'y=10.3' الأمر الذي يجمعهما :
      1. expr $x+$y
      2. echo (( $x+$y ))
      3. echo $(( x+y ))
      4. echo "$x+$y" | bc
    7. واحدة من التالية خطأ
      1. 'if [ -e myfile] then' ... etc
      2. 'if [ -e myfile]; then' ... etc
      3. [ -e myfile] && echo '[myfile] is there'
    8. واحدة من التالية خطأ عند مقارنة أعداد صحيحة :
      1. '[ $x > $y ]' ... إلخ
      2. '[ $x -gt $y ]' ... إلخ
      3. '(( $x > $y ))' ... إلخ
  2. ما الفرق بين '[ $x == $y ]' و '[ $x -eq $y ]' ؟
  3. ما هي مخرجات 'cd /home/ali; (( cd foo )) ; pwd' ؟
  4. ما مخرجات :
    #! /bin/bash
    function foo() {
        echo $#
    }
    foo Hello world
    
  5. ما الخطأ في النص البرمجي التالي ؟ يفترض أن يطبع المعاملات بأحرف كبيرة
    #! /bin/bash
    function to_up() {
        echo "$*" | tr a-z A-Z
    }
    to_up
    
  6. تتتبع ماذا يفعل هذا النص ؟
    #! /bin/bash
    function to_lo() {
        echo "$*" | tr A-Z a-z
    }
    for i in $@
    do
        [ -e "`to_lo $i`" ] && echo "skip $i" || mv "$i" "`to_lo $i`"
    done
    
  7. قام شخص بتصنيف ملف hello.java بواسطة javac فحصل على ملف hello.Class ثم كتب java hello.Class فلم ينجح تنفيذ الملف، لماذا ؟
  8. مل هو الفرق بين مصنف java المسمى javac والمسمى gcj .

هذه مجموعة من الأسئلة المتوسطة حول فصول هذا الباب. يفترض أن تتمكن من الإجابة عليها بعد قراءة وتطبيق هذا الباب.

  1. متغير بيئة يسمى 't' كيف تعرضه متبوعاً بحرف 'm' دون مسافة ؟
  2. اكتب نص تنفيذي script اسمه gzall.sh يقوم بضغط كل الملفات التي تمرر له على شكل معاملات بطريقة gz
  3. اكتب نص تنفيذي script اسمه ungzall.sh يقوم بفك ضغط كل الملفات التي تمرر له على شكل معاملات بطريقة gz
  4. اكتب نص تنفيذي script اسمه gz2bz2.sh يحول الملفات الممرة له على كل معاملات المضغوطة بطريقة gz إلى مضغوط بطريقة bz2
  5. اكتب نص تنفيذي script اسمه findtmp.sh يعرض الملفات التي تنتهي بعلامة ~ (في المعاملات أو الدليل الحالي) وإذا استعملت الخيار d يحذفها.
  6. اكتب نص تنفيذي script يأخذ معاملات هي ملفات يحول كل سطر يحتوي كلمة WARNING فيها إلى أحرف كبيرة .
  7. اكتب نص تنفيذي script يأخذ معاملات هي ملفات يحذف فيها اشارة - من أي كلمة تبدأ ب ex- مثل ex-wife لتصبح exwife.
  8. اكتب نص تنفيذي script يعرض عدد مرات تكرار المعامل الأول في الملفات من باقي المعاملات.
  9. اكتب نص تنفيذي script اسمه badnames.sh يعرض أسماء الملفات التي لها أسماء مكونة من غير الأرقام والحروف.
  10. اكتب نص تنفيذي script اسمه autoren.sh يحذف المسافات من أسماء (بإعادة تسميتها) وتحويلها إلى - مع ملاحظة احتمال وجود الاسم الجديد مسبقاً أو وجود أكثر من مسافة.
  11. اكتب نص تنفيذي script اسمه noblank.sh يحذف الأسطر الخالية من أي ملف.
  12. اكتب نص تنفيذي script اسمه calc.sh يأخذ أرقام (موجبة أو سالبة) ويظل يجمعها حتى إدخال ما ليس برقم. (استعمل bc ومتغيّر مركم)
  13. ما هو ناتج [ "1" < "10" ] && echo "1 is bigger than 10" || echo "12 is bigger than 1" ، لماذا ؟ تأكد من جوابك عملي
  14. البرنامج التالي نص بلغة perl ماذا يفعل هذا البرنامج ؟
    #!/usr/bin/perl -w
    $a=chomp( ) ;
    printf ("a = %g\n", (($a<0.0)?($a):(-$a)) );
    

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

  1. مخرجات 'grep -q vfat /etc/fstab; echo -e "$*"' هي: (اختر الإجابة)
    1. معاملات grep
    2. معاملات echo
    3. معاملات bash
  2. اكتب نص تنفيذي script اسمه fstab-gen يستعمل برنامج parted لتوليد ملف fstab بشكل تلقائي.
  3. اكتب نص تنفيذي script اسمه unix2dos.sh يستعمل tr ليقوم بنفس وظيفة الأداة unix2dos التقليدية.
  4. اكتب نص تنفيذي script اسمه split.sh يستعمل dd مع خيار skip ليقوم بنفس وظيفة الأداة split التقليدية.
  5. اكتب برنامج تطبيقي آلة حاسبة بواسطة Ptyhon و GTK.
  6. اقرأ ملف java.txt في kernel-doc، واجعل برامج تتنفذ مثل أي برنامج عادي عبر النواة فقط بكتابة اسمها.


<< السابق كتاب لينكس الشامل التالي >>