السبت، 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 في نفس المجلد التي يتواجد في السكريبت و لكن في حالة أخرى يجب ذكر المسار كاملاً .



      الأحد، 25 مارس 2012

      كيف تصنع نظام تشغيل ؟

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

      هذه مصادر لتعلم برمجة أنظمة التشغيل من الصفر ,لكن لازم يكون عندك تمكن من اللغة الأنجليزية و لغة السي و الأسمبلي و كيفية عمل الكمبيوتير :


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

      الأقلاع (boot) من الفلاش

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

      في موضوع سابق كتبت عن كيفية تثبيت لينكس على فلاش و قد رأيت أن أشرح كيفية تعديل البيوس "BIOS" للأقلاع من الفلاش بدل الهاردسك .

      نظام البيوس "BIOS" : أختصار لـ"basic input output system" نظام الأدخال و الأخراج الاساسي , و هدف هذا النظام هو التهيئة لعملية الأقلاع , و كما يوفر نظام البيوس وظائف تستخدمها بعض أنظمة التشغيل للتخاطب مع الأجهزة .

      أبحث عن الثغرات في موقعك

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

      Sucuri موقع يقدم خدمة البحث عن البرمجيات الخبيثة الموجودة على موقعك بدون علمك بشكل مجاني , كما تستطيع الأستفادة من الخدمة المدفوعة من قبل الموقع للتخلص من هذه البرامج .

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

      و هذه صورة لنتائج البحث في مدونتي :


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

      كتاب أوبونتور لينكس للمبتدئين

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

      كتاب أوبونتو لينكس للمبتدئين للكاتب صبري عبدالله حسين , يقدم لك الخطوات الأولى في نظام لينكس أوبتونو (ubuntu) , من التركيب حتى تثبيت البرامج , و أن انصح بقراءته لمن يريد التعرف على لينكس و الانضمام لمستخدمي هذا النظام الرائع .

      التعامل مع المصفوفات في لغة BASH

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

      ستتعلم في هذا الموضوع كيفية التصريح و التعامل مع المصفوفات في لغة باش سكريبت في نظام التشغيل لينكس بأمثلة :

      1 . التصريح عن مصفوفة :

      يتم إنشاء مصفوفة عند تصريح عن متغير بهذه الصيغة :

      name[index]=value
      • name : أسم المتغير .
      • index : قيمة الفهرس .
      • value : قيمة المتغير .
      و هذا مثال عن أستخدام المصفوفات في هذا السكريبت:

      #!/bin/bash

      name[1]="mohmmed"

      name[2]="salem"

      name[3]="abdullah"

      echo ${name[2]} #Print the value number 2

      ترى في السطر الأخير أننا قمنا بطباعة القيمة و أستدعاءها بأستخدم "{}$"  .

      2 . التصريح عن المصفوفة و تعيين جيمع قيمها في سطر واحد :

      تستطيع التصريح عن مصفوفة و تعيين جيمع قيمها بواسطة الأمر declare كهذا المثال :

      #!/bin/bash

      declare -a name=("mohmmed" "salem" "abdullah")



      echo ${name[2]}



      3 .  طباعة جميع عناصر المصفوفة :

      لطباعة جميع عناصر المصفوفة تستطيع أستخدام الحرف @  كقيمة للفهرس كهذا المثال :

      #!/bin/bash

      declare -a name=("mohmmed" "salem" "abdullah")



      echo ${name[@]}



      4 . طباعة طول المصفوفة :

      لطباعة عدد عناصر المصفوفة تستطيع أستخدام الحرف "#" و "@" كهذا المثال :

      #!/bin/bash

      declare -a name=("mohmmed" "salem" "abdullah")



      echo ${#name[@]}


      و لعرض طول عنصر في المصفوفة كالتالي بأستخدام الحرف "#" و رقم الفهرس الخاص بالعنصر :
      #!/bin/bash

      declare -a name=("mohmmed" "salem" "abdullah")

      echo ${#name[1]}


      5 . الحصول على عدد من العناصر بواسطة البعد :

      تستطيع أستخدام بأستخدام ترقيم العناصر طباعة العناصر المختارة كهذا المثال :
      #!/bin/bash

      declare -a name=("mohmmed" "salem" "abdullah")

      echo ${name[@]:1:2}


      سيتم طباعة العنصرين رقم 1 و 2 (تذكر أن ترقيم العناصر يبدأ من الصفر ).

      6 . الحصول على جزء من العنصر :

      للحصول على جزء من العنصر كهذا المثال :
      #!/bin/bash

      declare -a name=("mohmmed" "salem" "abdullah")

      echo ${name[1]:1:2}


      ستيم طباعة الحروف "al" فقط من العنصر 1 .

      7. البحث و الأستبدال في المصفوفة :

      للبحث عن قيمة في المصفوفة و أستبدالها تستطيع أستخدام الطريقة التالية :
      #!/bin/bash

      declare -a name=("mohmmed" "salem" "abdullah")

      echo ${name[1]/salem/ahmed}


      استخدمنا "salem/ahmed/" حيث أبتدئنا بالقيمة التي نريد تغيرها ثم القيمة الجديدة .

      8. أضافة عنصر لمصفوفة موجودة :
      #!/bin/bash

      declare -a name=("mohmmed" "salem" "abdullah")

      name=("${name[@]}" "Ahmed") #هذا السطر سيضيف قيمة جديد للمصفوفة

      echo ${name[3]}


      لأضافة قيمة جديدة للمصفوفة تستطيع أستخدام الطريقة الموجودة في السطر الثالث في المثال .

      9. حذف عنصر من المصفوفة:

      لحذف عنصر تستطيع أستخدام الأمر unset كالتالي :
      #!/bin/bash

      declare -a name=("mohmmed" "salem" "abdullah")

      unset name[1]


      سيتم حذف العنصر رقم 1 من المصفوفة .


      10 . البحث عن عنصر بواسطة القيمة و حذفه :

      #!/bin/bash

      declare -a name=("mohmmed" "salem" "abdullah")

      echo ${#name[1]/salem*/}


       في السطر الثالث سيتم حذف القيمة التي تبدأ بـ"salem" أو تساويها من المصفوفة بسبب وجود النجمة في نهاية القيمة في المثال  ,طبعا للحفظ الناتج يجب أتباع الخطوات في التالي بأستخدام الأمر declare :

      #!/bin/bash

      declare -a name=("mohmmed" "salem" "abdullah")

      declare -a  name2=(${name[1]/salem*/})



      11 . حذف مصفوفة كاملة :

      لحذف مصفوفة بكملها تستطيع أستخدام الأمر unset كالتالي :
      #!/bin/bash

      declare -a name=("mohmmed" "salem" "abdullah")

      unset name



       12 . أستخدام الحلقة التكرارية for للتعامل مع المصفوفات :

      تستطيع أستخدام الحلقة التكرارية for للوصول لعناصر المصفوفة كهذا المثال :
      #!/bin/bash
      declare -a name=("mohmmed" "salem" "abdullah")

      for i in ${name[@]}

      do
      echo $i > filetxt.txt
      done


      في هذا المثال سيتم حفظ قيم المصفوفة في الملف filetxt.txt .


      هذا نهاية هذا المقال و أذا كان لديك أخي القارىء أي أضافة أو تعديل أو سؤال فلا تتردد شاركنا .

      الجمعة، 9 مارس 2012

      لينكس : الأمر tr بالأمثلة

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

      يستخدم الأمر tr للبحث عن نمط معين في النصوص و أستبداله أو حذف من النص و يكون شكل الأمر  كهذا المثال :
      echo "linux" | tr "l" "L"
      • tr  : الأمر tr
      • "l" : المجموعة الأولى و التي يتم البحث عنها في الكلمة "linux".
      • "L": المجموعة الثانية و التي سيتم أستبدالها مكان المجموعة الأولى .
      هذا هو الشكل العادي للأمر tr و يمكن أستبدال أكثر من حرف أو مجموعة أحرف معرفة من قبل البرنامج كالتالي :

      cat file1 | tr "ael" "AEL"

      لحذف مجموعة من الأحرف تستطيع أستخدام الوظفية "d\" كهذا المثال :

      echo "linux" | tr -d "l" 

      هذا هو الشرح البسيط لهذه الأداة , و تحتوي هذه الأداة على مجموعات من الأحرف المعرفة لحفظ الوقت :

      • [:alnum:] :جميع الأحرف و الأرقام .
      • [:alpha:]  : جميع الأحرف الإنجليزية a-z و ِA-Z (بدون الأرقام )
      • [:blank:]  : الأسطر الفارغة .
      • [:cntrl:]   : حروف التحكم ( لا تظهر هذه الأحرف للمستخدم ) مثل (Ctrl+c) .
      • [:digit:] : الأرقام من 0 إلى 9 .
      • [:graph:] : جميع الحروف المطبوعة ما عدا المسافات .
      • [:lower:] : محموعة الأحرف من a-z 
      • [:upper:] : مجموعة الأحرف من ِA-Z
      • [:space:] : المسافة .

      الخميس، 8 مارس 2012

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

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

      يستخدم الأمر wc للتقديم أحصائيات عن أعداد الأحرف و الكلمات و الأسطر في الملفات النصية و هذه قائمة بمجموعة من الوظائف الموجودة في هذا الأمر :
      • c-       : طباعة عدد البت "bits" الموجودة في الملف, و يمكن أستخدمه على الملفات الثنائية "binary" .
      • m-      : طباعة عدد الأحرف .
      • w-      : طباعة عدد الكلمات .
      • l-        : طباعة عدد الأسطر .
      • L-       : طباعة عدد أحرف أطول سطر .
      • help-- : طباعة المساعدة الخاصة ببرنامج .
      و هذا مثال لطباعة عدد الأحرف و الكلمات و الأسطر و البايت للملف file.txt :

      wc -cwml examples.desktop

      9  12 179 179 examples.desktop


      و هذا تفصيل المخرجات بالترتيب ( لن يتغير ترتيب البيانات مع تغير ترتيب الوظائف):

      • 9 : عدد الأسطر .
      • 12 : عدد الكلمات
      • 179: عدد الأحرف.
      • 179:عدد البت .

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

      لينكس : الأمر cat بالأمثلة

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

      يستخدم الأمر cat في لينكس لعرض و الأضافة للملفات النصية , و سوف أعرض أستخدامات الأمر cat بالأمثلة :

      • عرض محتويات ملف نصي :
      cat text_file.txt

      سيتم طباعة محتويات الملف النصي text_file.txt للشاشة .

      • نسخ محتويات ملف و حفظها في ملف جديد أو موجود :
      cat text_file.txt > new_file.txt

      سيتم طباعة محتويات الملف text_file.txt و تحويل البيانات للملف new_file.txt بواسطة الأشارة < .

      • دمج الملفات :
      cat file1.txt file2.txt > new_file.txt

      سيتم طباعة الملفات الموجودة بحسب الترتيب و أضافتها إلى الملف الجديد "new_file.txt" .

      • الأضافة لملف نصي موجود :
      cat >> file.txt

      سيتم أضافة النص الذي يتم طباعته إلى الملف file.txt إلى أن يقوم المستخدم بضغط "Ctrl+C" .

      • أنشاء ملف جديد و أضافة نص إليه :
      cat > file.txt
       
      سيتم أنشاء الملف file.txt و في حالة وجوده سيتم حذف النص الموجود و أضافة النص من قبل المستخدم إلى ان يتم ضغط "Ctrl+C" .
       
      • طباعة ملف نصي مع ترقيم الأسطر :
      cat -n file.txt
       

      الأحد، 4 مارس 2012

      تنزيل الفيديو من مواقع HTML5

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

      لتنزيل الفيديو من المواقع التي تعمل بتقنية HTML5 ( و منها موقع اليوتيوب )تستطيع أستخدام هذه الطريقة في متصفح فايرفكس :

      • أضغط على في الصفحة بأستخدام زر الماوس اليمين , ستظهر لك القائمة التالية :
      • من القائمة أختر "media" , و أبحث في القائمة عن ملف يكون من النوع فيديو :
      • أضغط على زر "Save As" , و قم بتغير الملف إلى الامتداد "flv" :

      تثبيت متصفح قوقل كروم في ubuntu 11.12

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

      لتثبيت متصفح قوقل كروم في نظام تشغيل ubuntu أتبع هذه الخطوات :

      • قم بتنزيل المتصفح من هذا الرابط .
      • من موجه الأوامر قم بتفيذ الأمر التالي بعد تغير المجلد الحالي للمجلد الذي يوجد فيه الملف deb الخاص بالبرنامج 
       
      sudo dpkg -i google-chrome-stable_current_i386.deb

      • لتثبيت المكتبات اللازمة لتشغيل المتصفح قم بتفيذ الأمر التالي :
      sudo apt-get install -f

      الخميس، 1 مارس 2012

      تعلم لغة Prolog

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

      هذه مجموعة من الدروس للغة prolog حصلتها في موقع اليوتيوب للدكتور عبد الله المطوع (جزاه الله خيراً) , و لمن لا يعرف لغة Prolog فهي لغة برمجة منطقية تهتم بالعلاقات بين البيانات و ترابطها , و تستخدم في برامج الذكاء الأصطناعي , و هذا رابط الصفحة الخاص بالمادة التعليمية

       http://www.youtube.com/user/DoctorMutawa/videos?query=prolog 

      و هذا مقال لكيفية تثبيت مترجم اللغة في ubuntu :