6.8 تمارين الباب السادس
هذه مجموعة من الأسئلة الأساسية حول فصول الباب السادس.يفترض أن تتمكن من الإجابة عليها بمجرد
قراءة هذا الباب.
- اختر الإجابة الصحيحة:
- واحدة من التالية ليست صحيحة بخصوص '#' :
- تحدد المفسر shell إذا تبعت بعلامة '!'
- تحول السطر إلى تعليق إذا بدأ بعلامة '#'
- تكمل بقية السطر كما '
echo "woo" # display woo
'
- تعليق حتى لو كان كان داخل علامة تنصيص
echo "I'm \#1"
- برنامج يبدأ ب
#!/usr/bin/env wish
فإنه مكتوب بلغة
- wish
- env
- tcl
- sh
- واحد من التالية لا يجمع 'x' مع 'y':
-
expr $x+$y
-
echo (( $x+$y ))
-
echo $(( x+y ))
-
echo $(( $x+$y ))
- (a) و (b)
- إذا كتبت النص التنفيذي 'Hello, world!' التقليدي ،
وعندما نفذته حصلت على 'permission denided' فإن هذا يعني :
- فقط الجذر يمكنه تشغيله ، عليك استعمال 'su'
- غيّر اسم الملف لينتهي ب '.sh'
- غيّر الأذونات إلى 755.
- غيّر مالك الملف.
- مخرجات '
grep -q vfat /etc/fstab; echo $?
' هي
- معرّف PID لبرنامج grep
- 0 فقط إذا وجد vfat
- 0 إذا لم يجد vfat.
- 3، عدد معاملات grep
- إذا كان 'x=15.2' و 'y=10.3' الأمر الذي يجمعهما :
-
expr $x+$y
-
echo (( $x+$y ))
-
echo $(( x+y ))
-
echo "$x+$y" | bc
- واحدة من التالية خطأ
- '
if [ -e myfile] then
' ... etc
- '
if [ -e myfile]; then
' ... etc
-
[ -e myfile] && echo '[myfile] is there'
- واحدة من التالية خطأ عند مقارنة أعداد صحيحة :
- '
[ $x > $y ]
' ... إلخ
- '
[ $x -gt $y ]
' ... إلخ
- '
(( $x > $y ))
' ... إلخ
- ما الفرق بين '
[ $x == $y ]
' و '[ $x -eq $y ]
' ؟
- ما هي مخرجات '
cd /home/ali; (( cd foo )) ; pwd
' ؟
- ما مخرجات :
#! /bin/bash
function foo() {
echo $#
}
foo Hello world
- ما الخطأ في النص البرمجي التالي ؟ يفترض أن يطبع المعاملات بأحرف كبيرة
#! /bin/bash
function to_up() {
echo "$*" | tr a-z A-Z
}
to_up
- تتتبع ماذا يفعل هذا النص ؟
#! /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
- قام شخص بتصنيف ملف hello.java بواسطة javac فحصل على ملف hello.Class ثم كتب
java hello.Class
فلم ينجح تنفيذ الملف، لماذا ؟
- مل هو الفرق بين مصنف java المسمى javac والمسمى gcj .
هذه مجموعة من الأسئلة المتوسطة حول فصول هذا الباب. يفترض أن تتمكن من الإجابة عليها
بعد قراءة وتطبيق هذا الباب.
- متغير بيئة يسمى 't' كيف تعرضه متبوعاً بحرف 'm' دون مسافة ؟
- اكتب نص تنفيذي script اسمه gzall.sh يقوم بضغط كل الملفات التي تمرر له على شكل معاملات بطريقة gz
- اكتب نص تنفيذي script اسمه ungzall.sh يقوم بفك ضغط كل الملفات التي تمرر له على شكل معاملات بطريقة gz
- اكتب نص تنفيذي script اسمه gz2bz2.sh يحول الملفات الممرة له على كل معاملات المضغوطة بطريقة gz إلى مضغوط بطريقة bz2
- اكتب نص تنفيذي script اسمه findtmp.sh يعرض الملفات التي تنتهي بعلامة ~ (في المعاملات أو الدليل الحالي) وإذا استعملت الخيار d يحذفها.
- اكتب نص تنفيذي script يأخذ معاملات هي ملفات يحول كل سطر يحتوي كلمة WARNING فيها إلى أحرف كبيرة .
- اكتب نص تنفيذي script يأخذ معاملات هي ملفات يحذف فيها اشارة - من أي كلمة تبدأ ب ex- مثل ex-wife لتصبح exwife.
- اكتب نص تنفيذي script يعرض عدد مرات تكرار المعامل الأول في الملفات من باقي المعاملات.
- اكتب نص تنفيذي script اسمه badnames.sh يعرض أسماء الملفات التي لها أسماء مكونة من غير الأرقام والحروف.
- اكتب نص تنفيذي script اسمه autoren.sh يحذف المسافات من أسماء (بإعادة تسميتها) وتحويلها إلى - مع ملاحظة احتمال وجود الاسم الجديد مسبقاً أو وجود أكثر من مسافة.
- اكتب نص تنفيذي script اسمه noblank.sh يحذف الأسطر الخالية من أي ملف.
- اكتب نص تنفيذي script اسمه calc.sh يأخذ أرقام (موجبة أو سالبة) ويظل يجمعها حتى إدخال ما ليس برقم. (استعمل bc ومتغيّر مركم)
- ما هو ناتج
[ "1" < "10" ] && echo "1 is bigger than 10" || echo "12 is bigger than 1"
،
لماذا ؟ تأكد من جوابك عملي
- البرنامج التالي نص بلغة perl ماذا يفعل هذا البرنامج ؟
#!/usr/bin/perl -w
$a=chomp( ) ;
printf ("a = %g\n", (($a<0.0)?($a):(-$a)) );
هذه مجموعة من الأسئلة المتقدمة حول فصول هذا الباب.
عليك أن تبحث (ربما في أبواب أخرى من الكتاب) وتفكر لكي تحصل على الإجابة
- مخرجات '
grep -q vfat /etc/fstab; echo -e "$*"
' هي: (اختر الإجابة)
- معاملات grep
- معاملات echo
- معاملات bash
- اكتب نص تنفيذي script اسمه fstab-gen يستعمل برنامج parted لتوليد ملف fstab بشكل تلقائي.
- اكتب نص تنفيذي script اسمه unix2dos.sh يستعمل tr ليقوم بنفس وظيفة الأداة unix2dos التقليدية.
- اكتب نص تنفيذي script اسمه split.sh يستعمل dd مع خيار skip ليقوم بنفس وظيفة الأداة split التقليدية.
- اكتب برنامج تطبيقي آلة حاسبة بواسطة Ptyhon و GTK.
- اقرأ ملف java.txt في kernel-doc، واجعل برامج تتنفذ مثل أي برنامج عادي عبر النواة فقط بكتابة اسمها.