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

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

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

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

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

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

  • عرض رسالة (yes / no ) للمستخدم :

Ubuntu:إنشاء صورة QR

بسم الله الرحمن الرحيم
كتبت في موضوع سابق عن صور QR و في هذا الموضوع سوف أعرض الأداة  qrencode لتثبيت الإداة في نظام ubuntu :


sudo apt-get install qrencode

  • أنشاء صورة QR :
qrencode -o 1.png "http://abgoor.blogspot.com"

لتحديد أسم الصورة يتم استخدم o- متبوعاً بأسم الصورة في حالة مثالنا "1.png" , ثم في نهاية الأمر القيمة النصية المراد حفظها في الصورة .

و هذه قائمة ببعض أوامر qrencode :

  • v- : تحديد أصدارة الصورة الناتجة .
  • s- : تحديد حجم الصورة بواسطة البكسل (pixel) , الأفتراضي 3
  • c- : الأنتباه لحالة الاحرف في اللغة الأنجليزية (Case sensitive ).
  • i-  : تجاهل حالة الأحرف و تسجيل جميع الأحرف بحالة upper .


لينكس : الأمر alias

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

يستخدم الأمر alias لإنشاء أختصار لأمر موجود في النظام بهدف أختصار الأوامر الكثيرة الأستخدام و هذا مثال :
alias l="ls -l"

و هذا مثال للأمر find :
alias code="find ./ -type f -name *.c  > list.txt"

الأربعاء، 28 مارس 2012

لينكس :الأمر lsattr لعرض خصائص الملفات

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

يستخدم الأمر lsattr لعرض خصائص الملفات ( في هذا الموضوع شرح للخصائص )  و هذه قائمة بالأختيارات الموفرة من هذا الأمر :

  • R : عرض خصائص الملفات و المجلدات و الملفات التي تحتويها .
  • V : إصدارة البرنامج .
  • a : عرض جميع الملفات حتي الملفات المخفية التي تبدأ ب"." 
  • d : عرض خصائص المجلدات بدون عرض خصائص الملفات التي تحتويها .
  • v : عرض إصدارة الملف و الرقم التسلسلي .
و هذا مثال على أستخدام الأمر :
abgoor@abgoor-Extensa-4630Z:~/Documents/test$ lsattr *

-----a-----------e- text10.txt

----i------------e- text4.txt

لينكس : حماية الملفات من المسح بواسطة chattr

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

يستخدم الأمر chattr لتغير خصائص الملف التي يوفرها نظام الملفات الخاص بلينكس و منها منع حذف الملف حتى بواسطة المستخدم الجذر "root" , إلا بعد تغير الخصائص من المستخدم ذوي الصلاحية , وهذه قائمة بالأختيارات الخاصة بالبرنامج ( هنالك بعض الخصائص التجريبية لم أتطرق لها ) :

  • A  : منع تحديث وقت القراءة "Access time" .
  • a  : لا يمكن مسح محتويات الملف أو حذف , و لكن يمكن أضافة البيانات للملف فقط .
  • c  : تفعيل خاصية ضغط الملف بواسطة النواة "kernel" .
  • D : خاصية خاصة بالمجلدات , و المجلد الذي تفعل له هذه الخاصية يتم كتابة البيانات مباشرة بدون أنتظار .
  • d : الملف الذي تفعل له هذه الخاصية لا يتم أخذ نسخة أحتياطية له بواسطة البرنامج dump
  • i  : الملف الذي تفعل له هذه الخاصية لا يمكن حذفه أو تعديله أو أعادة تسميته .
  • s  : عند حذف الملف يتم تصفير المساحة المستخدمه من قبله في القرص الصلب .
  • S : مشابه للخاصية D و لكن للملفات , حيث يتم كتابة البيانات الخاصة بالملف مباشرة في القرص الصلب .
  • u : عند خذف الملف يتم حفظ مكوناته , هذه الخاصية تساعد في حالة الحذف الخاطىء .
و هذا مثال على منع حذف ملف بواسطة الأمر chattr :

sudo chattr +i file.txt

لتغير الخصائص لابد من أستخدام الأمر sudo أو حساب المستخدم الجذر , قم الأن بمحاولة التعديل أو حذف الملف بأستخدام حسابك العادي أو حتى بأستخدام حساب المستخدم الجذر "Root" :

abgoor@abgoor-Extensa-4630Z:~/Documents/test$ rm file.txt

rm: cannot remove `file.txt': Operation not permitted


و الأن لإلغاء الخاصية يجب أستعمال "-" كالتالي :

sudo chattr -i file.txt

الثلاثاء، 27 مارس 2012

الوسائط في برمجة الباش سكريبت

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

يوفر BASH في لينكس إمكانية تمرير الوسائط إلى السكريبت لتلقي المعلومات و يتم إعطاء الوسائط أسم متغير عبارة عن رقم بحسب ترتيب الوسيط في الأمر و يبدأ الترقيم من الرقم 1 و هذا مثال عن طريقة التعامل مع الوسائط :
#!/bin/bash
#Script name:args.sh 
echo $0
echo $1
echo $2

    قم بتنفيذ السكريبت كالتالي :

    ./args.sh 1123 232

      المتغير 0$ يحتوي على أسم السكريبت دائما , كما يوفر الباش المتغير #$ الذي يعطي عدد الوسائط و المتغير @$ الذي يحتوي على جميع قيم المتغيرات و هذا مثال على أستخدام هذه القيم  :

      #!/bin/bash

      echo "Number of argument:" $#

      for i in $@

      do

      echo $i

      done



      سكريبت لإعادة تسمية أكثر من ملف من نفس النوع

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

      لإعادة تسمية أكثر من ملف من نفس النوع تستطيع أستخدام هذا السكريبت :
      #!/bin/bash
      #written by abgoor.blogspot.com
      #under GPL license
       
      if [ $# -ne 2 ];then

      echo "Usage:<name><file type 'jpg'>"

      exit 0

      fi


      counter=0

      for i in *.$2

      do

      mv $i $1$counter.$2

      counter=$((counter+1))

      done

      تستطيع أستخدام هذا السكريبت كالتالي :
      ./rename text txt

      القيمة الأولى هي الأسم المستخدم و القيمة الثانية هي أمتداد الملفات التي تريد تغير أسمها و سيكون ناتج السكريبت ملفات مرقمة كالتالي :text1.txt و text2.txt و text3.txt إلى أخره .

      aspell : كشف الأخطاء الأملائية في BASH

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

      يستخدم الأمر aspell في موجه الأوامر للتدقيق الأملائي , وتستطيع أستخدمه كما في المثال التالي :
      echo "Appele" | aspell -a

      يستخدم "a-" لدلالة بان البيانات تأتي من pipe .

      سيتم طباعة الكلمات الصحيحة بدل الكلمة Appele كالتالي:

      & appele 23 0: Apple, apple, appeal, apply, appall, applier, appealed, Opel, apples, applet, Pele, appeals, appear, appease, dapple, rappel, ample, Adele, Aspell, ampule, appeal's, Apple's, apple's


      و لتدقيق على البيانات من ملف يجب أستخدام الأمر كالتالي :

      aspell check filename


      تفعيل التغيرات في ملف .bashrc

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

      يستخدم الملف bashrc. لحفظ الإعدادت و تفيضلات المستخدم لموجه الأوامر bash و لتفعيل التحديثات في ملف bashrc. بدون اعادة تشغيل موجه الأوامر تستطيع أستخدام الأمر source كالتالي :
      source ~/.bashrc

      الدوال في باش سكريبت "BASH Script"

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

      • ما هي الدالة ؟
      الدالة عبارة عن مجموعة من الأوامر البرمجية التي يتم تنفيذها معاً

      • لماذا أستخدام الدوال في لغة باش سكريبت ؟
      يعمل أستخدام الدوال في برنامج على تهسيل قراءة النص البرمجي و زيادة فعالية النص البرمجي بتقليل حجم النص البرمجي , كما يمكننك تضمين الوظائف التي تستخدمها بكثرة في برامج في ما ملفات سكريبت تستطيع استدعاءها في برامج , نفس فكرة المكتبات البرمجية في اللغات العليا .

      • تعريف دالة :
      لتعريف دالة يجب أستخدام الأمر function ثم أسم الدالة متبوعا بالقوسين () , ويتم تضمين النص البرمجي بين القوسين { } كهذا المثال :
      function hello(){

      echo "Hello,World!"

      }

      • استدعاء الدالة :
      لأستدعاء الدالة يجب كتابة أسم الدالة فقط بدون اﻷقواس:
      function hello(){

      echo "Hello,World!"

      }

      hello

      • تمرير الوسائط :
      تستطيع أرسال المعلومات لدالة من برنامج بواسطة الوسائط كما في هذا المثال :

      function hello(){

      echo $1

      echo $2

      }


      hello "Hello" "World"

      • تضمين الدوال في ملف :
      تستطيع تضمين الدوال في ملف و أستدعاءها لبرامجك , و لتوضيح سننشأ ملف بأسم func1.sh يحتوي على الدالة hello التي قمنا بأستخدمها في مثالنا :

      #!/bin/bash

      #func1.sh

      function hello(){

      echo $1

      echo $2

      }

      و سنقوم بأستدعاء الملف و تحميل جميع الدوال الموجودة فيه بأستخدام "." التي توازي الأمر include في لغة C :

      #!/bin/bash

      . func1.sh
      hello "1" "2"


      لا تنسى ان تضع مسافة بين النقطة و مسار الملف , كما تذكر في مثالنا أفترضت بأن الملف func1.sh في نفس المجلد التي يتواجد في السكريبت و لكن في حالة أخرى يجب ذكر المسار كاملاً .