السبت، 31 مارس 2012

الأداة whiptail لتصميم البرامج الرسومية في Bash

بسم الله الرحمن الرحيم

يستخدم الأمر whiptail لتوفير واجهة رسومية مباشرة في موجه الأوامر مما يسهل التعامل مع السكريبت للمستخدمين العاديين .

  • عرض رسالة للمستخدم :
whiptail --title "Example1" --msgbox "Hello,World" 10 40

1 .  title--      : عنوان الرسالة
2.  msgbox-- : أختيار عرض رسالة المعلومات متبوعاً بالنص المراد عرضه
3.  10            : أرتفاع الرسالة
4. 40             : عرض الرسالة .

  • عرض رسالة (yes / no ) للمستخدم :
 whiptail --title "Example1" --yesno "Example1:yes/no box." 10 78

1. title--   : عنوان الرسالة .
2. yesno--: أختيار صندوق الرسائل متبوعاً بالرسالة المراد عرضها .
3. 10 : أرتفاع الرسالة .
4. 78 : عرض الرسالة .


عند أختيار yes يعيد البرنامج القيمة صفر و القيمة واحد عند الأختيار No و يتم حفظ هذه القيمة في المتغير الخاص ?$ و هذا مثال للتعامل مع هذا المتغير :

whiptail --title "Example1" --yesno "Example1:yes/no box." 10 78

exitstatus=$?

if [ $exitstatus = 0 ]; then

    echo "User selected Yes."

else

    echo "User selected No."

fi

echo "(Exit status was $exitstatus)"


  • الحصول على معلومات من المستخدم :
name=$(whiptail --inputbox "what is your name" 10 40 3>&1 1>&2 2>&3)

echo $name

يقوم الأمر whiptail بطباعة المعلومات المقدمه من المستخدم إلى جهاز sterr لذا لابد من تحويل المعلومات إلى stdin و هذا ما قمنا به في نهاية الأمر :
3>&1 1>&2 2>&3



  • الحصول على كلمات السر :
password=$(whiptail --passwordbox "Password:" 10 40 3>&1 1>&2 2>&3)

echo $password

هذا الأختيار مشابه للسابق و الفرق بأنه سيتم عرض نجوم بدل عرض النص المطبوع .


  • إنشاء قائمة :
meun=$(whiptail --menu "Operating system" 20 70 10 "Option 1" "information" "Option2" "information" 3>&1 1>&2 2>&3)

 تحديد طول و عرض القائمة و طول القائمة:
20 70 10

عرض القيم مع شرح لكل قيمة :
"Option 1" "information" 

يتم طباعة القيمة المختارة في الجهاز sterr و لتغلب على هذه المشكلة أستخدمنا هذا السطر:

3>&1 1>&2 2>&3

*تستطيع في هذا النوع أختيار أختيار واحد فقط .




  • قائمة أختيارات متعددة:
list=$(whiptail --checklist "List" 10 28 3 "option1" "info" ON "option2" "info" OFF 3>&1 1>&2 2>&3)

المختلف في هذه القائمة هو ان المستخدم يستطيع تمكين أكثر من أختيار , كما أن المبرمج يستطيع التحكم في حالة اﻷختيارات :
"option1" "info" ON

سيتم تفيعل الاختيار بواسطة "ON" في نهاية الأمر ,و عند أنهاء تنفيذ الأمر سيتم حفظ الأختيارات في المتغير list .





  • مؤشر التقدم "Progress gauge" :
هذا مثال على أستخدام مؤشر التقدم :

{

    for ((i = 0 ; i <= 100 ; i+=10)); do

        sleep 1

        echo $i

    done

} | whiptail --gauge "Please wait" 5 50 0







ليست هناك تعليقات:

إرسال تعليق