السبت، 25 فبراير 2012

إنشاء شجرة مجلدات بأستخدام mkdir

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

تستطيع أستخدام أمر mkdir لإنشاء شجرة مجلدات كالتالي :
mkdir -p p1/{sub1,sub2,sub3}/{doc,src,bin}

في هذا المثال سيتم أنشاء المجلد p1 ثم المجلدات sub1 و sub2 و sub3 و سيحتوي كل مجلد من المجلدات السابقة على المجلدات ( bin , src ,doc) .

الاثنين، 20 فبراير 2012

BASH:كود لعرض الملفات المحتوية على كلمة معينة

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

هذا الكود البرمجي الذي يستخدم البرنامج find و grep للطباعة أسماء الملفات المحتوية على كلمة معينة من قبل المبرمج :

find $HOME -type f -exec grep -q "void" {} \; -print

و هذه مقالة كاملة عن الأمر find في لينكس (http://abgoor.blogspot.com/2010/10/find.html) .

إيقاف خاصية تذكر كلمة السر في اﻷمر sudo

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

يستخدم الأمر sudo في نظام لينكس لتنفيذ الأوامر بأستخدام حساب المستخدم الجذر "Root" و هو أقوى حساب في نظام لينكس كالتالي :

sudo ls

و في حالة تنفيذ الأمر sudo مرة أخرى في موجه الأوامر "terminal" لوقت محدد , سوف لن يطالبك البرنامج بكلمة السر , و لألغاء هذه الخاصية قم بأستخدام هذا الأمر :

sudo visudo

و أضف السطر التالي :

Defaults    timestamp_timeout = 0


الأحد، 12 فبراير 2012

مجموعة من صيغ البحث بواسطة لينكس (Regular expression)

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

هذه مجموعة من صيغ البحث ( Regular expression ) التي توصلت لها أو قرأتها في أحد المواقع و جمعتها في هذا الموضوع , و جميع هذه الصيغ تستخدم بواسطة الأداة grep :

1 . البحث عن عناوين الأي بي :

grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' example.txt

2. العثور على روابط صفحات الأنترنت في النص :

grep -o 'http://[^"]*' example.html

3 . العثور على عناوين البريد الألكتروني :

grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*' test.txt

ماسح لمنافذ البرتوكول UDP بواسطة البايثون

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

هذا كود بسيط قمت ببرمجته لعرض المنافد المتاحة للبرتوكول UDP بأستخدام لغة البايثون :
#!/usr/bin/python
#abgoor.blogspot.com
import socket
import sys
try:
    Site=sys.argv[1]
except:
    print "<Site or IP address>"
    sys.exit(1)
for i in range(0,65535): #the range of the ports
    sos=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    sos.settimeout(0.1) #The time the program will wait for the connection
    sos.connect((Site,i))
    try:
        sos.send(b'H')
        sos.send(b'i')
    except socket.error:
        pass

    else:
        print "Port:%d"%(i)
    sos.close()
    del(sos)

السبت، 11 فبراير 2012

دمج ملف مضغوط مع سكريبت باش (BASH)

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

قمت بترجمة مقالة وجدنها في هذا الموقع  (http://www.stuartwells.net/slides/selfextract.htm)  عن كيفية لإنشاء ملف مضغوط ذاتي التشغي بأتباع هذه الخطوات :

1 . إنشاء ملف السكريبت :
#!/bin/bash

echo ""

echo "Self Extracting Tar File"

echo ""

echo "Example by Stuart Wells"

echo ""

echo "Extracting file into `pwd`"

SKIP=`awk '/^__TARFILE_FOLLOWS__/ { print NR + 1; exit 0; }' $0`


#مسار و اسم الملف

THIS=`pwd`/$0



# إرسال البيانات المدمج إلى برنامج tar

tail -n +$SKIP $THIS | tar -xz



#
# أي سكريبت بعد هذا السطر سيتم تنفيذه بعد أنتهاء فك ضغط الملف المدمج

echo "Finished"

exit 0

# لا تضع أي سطور جديد بعد السطر التالي
__TARFILE_FOLLOWS__

الجمعة، 10 فبراير 2012

البحث في wiki بواسطة برتوكول DNS

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

يستخدم برتوكول DNS لتحويل أسماء المواقع من الصيغة المقرؤة مثل "www.example.com" إلى  "127.0.0.1" , و لكن قام أحد المطورين بأستخدام هذا البرتوكول كطريقة للبحث في موسوعة الأنترنت "Wiki" .

و للبحث في لينكس تستطيع أستخدام الأمر dig في موجه الأوامر "terminal" الذي يستخدم للتعامل مع برتوكول DNS كالتالي :

dig +short txt hacker.wp.dg.cx

"Hacker may refer to: Hacker (computer security), someone involved in computer security/insecurity, Hacker (programmer subculture), a programmer subculture originating in the US academia in the 1960s, which is nowadays mainly notable for the free software/" "open source movement, Hacker (hobbyist), an enthusiastic home computer hobbyist http://a.vu/w:Hacker" 

فقط قم بكتابة الكلمة المراد البحث عنها بعد الأمر dig , متبوعاً بالعنوان الألكتروني  "wp.dg.cx" , وللبحث عن أكثر من كلمة قم بفصل الكلمات بأستخدام "\" ثم مسافة كهذا المثال :

dig +short txt C\ programming\ language.wp.dg.cx

إنشاء القوائم في bash بواسطة الأمر select

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

يوفر الأمر select إمكانية أنشاء قوائم للتفاعل مع المستخدم و تسهيل أستخدام البرنامج , و هذا مثال بسيط على أستخدام هذا الأمر :

#!/bin/bash

select opt in "Hello" "Exit" ; do

if [ "$opt" = "Exit" ]; then
echo Exit
exit

elif [ "$opt" = "Hello" ]; then
echo Hello World


else
clear
echo "Error"
fi

done

الأحد، 5 فبراير 2012

الملف /dev/null في لينكس

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

/dev/null هو ملف خاص في أنظمة لينكس يتجاهل جميع البيانات التي يتم تحويلها إليه كالتالي :

ls > /dev/null

و يتم أستخدامه في الغالب في برامج السكريبت كالتالي :


ls > /dev/null 2>&1 

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

و هذه روابط لمواضيع ذات صلة بأستخدام الملف null :
http://abgoor.blogspot.com/2011/07/shell-script.html
http://abgoor.blogspot.com/2012/02/2-bash.html

معنى و أستخدام 2>&1 في برامج BASH

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

يوجد في نظام لينكس ثلاث أنواع من الملفات الخاصة بالتعامل مع دفق البيانات وهي :

  • stdin : يرمز إلى سيل البيانات المستقبل في الطرفية "terminal" و يرمز له بالرقم 0 .
  • stdout : يرمز إلى البيانات التي يتم طباعتها في الطرفية "terminal"  و يرمز له بالرقم 1 .
  • sterr :  يرمز إلى رسائل الخطأ التي يتم طباعتها في الطرفية "terminal" و يرمز له بالرقم 2 . 
و الأن إلى هذا المثال الذي يستخدم "redirected" تحويل البيانات من برنامج إلى ملف :

ls > file.txt