BieNVeNue ChEz VoUs
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

BieNVeNue ChEz VoUs

iNSCRiVeZ-VouS aVaNT KSa Se BLoCK
 
الرئيسيةأحدث الصورالتسجيلدخول

 

 شرح لاوامر الشيل للينك

اذهب الى الأسفل 
كاتب الموضوعرسالة
Admin
Admin



المساهمات : 121
تاريخ التسجيل : 25/11/2007

شرح لاوامر الشيل للينك Empty
مُساهمةموضوع: شرح لاوامر الشيل للينك   شرح لاوامر الشيل للينك Icon_minitimeالإثنين نوفمبر 26, 2007 12:53 pm

--------------------------------------------------------------------------------

السلام عليكم ورحمه الله وبركاته

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


غلاف الباش Bash Shell يقدم لك الكثير و الكثير مما تتصوره ولا تتصوره!! إبتدأ من
لغة البرمجة التي تمكّنك من إنشاء برامج shell قوية Shell Programming ( مقارنة مع
Batch Programming ) و نهاية بالأوامر المضمنة فيه...و هذه قائمة سريعة لأبرز
مميزات هذا الغلاف:


1- سطر أوامر قياسي يأتي مع جميع نكهات لينكس.


2- يدعم خاصية إكمال السطر ( تعني يمكنك إكمال الأمر او اي شيء آخر بإستخدم زر Tab
).


3- يدعم خاصية تعديل سطر الأوامر ( حيث يمكنك مسح الأمر كله او بعضه من خلال زر
Back Space.


4- خاصية حفظ الأوامر Command History بحيث يمكنك إعادة إستدعاء نفس الأمر دون
الإضطرار إلى كتابته مرة أخرى و ذلك عن طريق مفاتيح الأسم.


5- يتيح لك الغلاف إمكانية تهيئته وفق متطلباتك ( Customize ) .


هذه بعض المميزات المهمة في هذا الغلاف بإلإضافة إلى الأمور الأساسية..كإظهار
المستخدم و مكان العمل Working Directory و يمكنك إضافة المزيد من المعلومات المهمة
كما سوف نتطرق إليه لاحقا.


5- كيفية تعديل غلاف الباش Bash Shell وفق ما تريد و حيث ما تحب:

=================================

عادة و عند تثبيتك لأحد نكهات لينكس و تقوم بشتغيل ال Bash Shell تكون له قيماّ
إفتراضية...فمثلا تكون المعلومات التي يعرضها عبارة عن إسم المستخدم و مكان عمله (
Working Directory ) و رمز المستخدم..


و أيضا تكون الوان الأوامر و نتائجها بلون باهت - نوعا ما - ... فقد تريد تغيير بعض
هذه الخصائص الإفتراضية وفق هواك...و هذا ما سوف اقوم بتوضحيه في هذا الموضوع.


بداية لازم نعرف الملفات التي يجب التعديل فيها..ما هي؟ و أيضا نعرف ما هو المتغير؟
و أخيرا انواع المتغيرات؟


اذا فهمنا و عرفنا اجابات هذه الأسئلة فقد انحلت العقدة من هذا الإسم Shell

هنالك ملفات كثيرة تختص بتهيئة و اعدادات خيارات الـ Shells و خصوصا Bash Shell
..لكن * أكثر * الملفات شيوعا و استخداما هي أربعة ملفات و هي :


- ~/.bash_profile

- ~/.bashrc

- /etc/profile

- /etc/bashrc


لاحظ الـ ~ و هي ترمز إلى المستخدم فهو يتغير من جهازي الا جهازك إلى جهازها
فمثلا قد يكون /home/compume/.bash_profile و هكذا..


الملفات التي ذكرتها بالأعلى قد تجدون تشابه بينها من ناحية الإسم...فقد تسألون و
تكلمون انفسكم لماذا لا نكتفي بملفين و نترك الإثنين الآخرين!!؟


الجواب على هذا التساؤل هو انه في حقيقة الأمر يوجد عدة مستخدمين بما فيهم المستخدم
الجذري..فقط لا يرغب احدا في تغير خصائص غلافه و آخر يرغب في تغييرها و ثالث يرغب
في تغييرها لكن بشكل مختلف..لهذا السبب و لغيرها وجدت الأربعة ملفات و لهذا السبب
يوجد نوعين من المتغيرات...لكن ما المتغير!!؟


المتغير كما أخذتم سنة اولى ثانوي : هو قيمة ( غير ثابتة ) تحتل مكان من
الذاكرة...و المتغير من اسمه يتغير و يتقلب وفق القيم التي تسديها اليه.


اعود فأقول بأن هنالك نوعين من المتغيرات في لينكس:


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


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


أتمنى انكم عند هذا الحد قد استوعبتم ما احاول الوصول اليه..حاول قراءة الموضوع
اكثر من مرة...هذا ان لم تقرأه ولا مرة


المتغيرات العامة تتخزن في الملفين :


- /etc/profile

- /etc/bashrc


و هذا يعني انه اذا قمنا بتغيير أي قيمة في هذين الملفين فإن التأثير يكون واضحا
جليا عند جميع المستخدمين الموجودين في لينكس.


اما المتغيرات الخاصة فتتخزن في الملفين:


- ~/.bash_profile

- ~/.bashrc


حتى الآن نتكلم عن المتغيرات و لكن لم نذكر بعضا من هذه المتغيرات المزعومة!!


من أمثلة هذه المتغيرات :

$PATH , $SHELL , $PS1 , $HISTORY ......الخ..و بإمكانك كتابة $ في الـ Terminal و
من ثم إضغط مفتاح Tab مرتين و سوف ترى مجموعة كبيرة من المتغيرات تصل الى 22
متغير.....او اصدر امر printenv و سوف يتم سرد المتغيرات مع قيمها..و لو تلاحظون
انه في البداية حرف $ و هو رمز المتغير في اغلب لغات البرمجه - ان لم يكن كلها - .


و لكي نعطي هذه المتغيرات قيمة..فإن لديك خيارين:


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

الثاني: إسناد قيمة للمتغير عبر هذه الصيغة:

المتغير المراد تغيير قيمته = القيمة المراد إسنادها اليه.

6- كيفية تعديل بعض المتغيرات المشهورة مع ذكر الأمثلة على ذلك:

============

أول متغير رايحين نتعرف عليه هو متغير PS1 ..حنعرف ما هي فائدته و كيفيه تغييره مع
الخيارات المتاحة له.


عمل هذا المتغير: يظهر اثر هذا المتغير عندما تقوم بتشغيل غلافك..حيث انه و بشكل
إفتراضي يكون بهذا الشكل الموضح في الصورة:

لاحظ

شفرة برمجية :

[root@localhost] /mnt/windows

هذا الشكل من أين أتى؟ ..هذا الشكل اتى من المتغير PS1 ..و هو افتراضيا يأخذ القيمة
التالية:

شفرة برمجية

PS1=="[u@h W]$"
اعتقد أن هذه
الرموز قد اربكتكم كثيرا لكن لا داعي للقلق..لتبسيط الشكل السابق خذوا هذا المثال:

شفرة برمجية :

PS1="[CompuMe Systeam]"
في هذا المثال اسندت القيمة [CompuMe Systeam] إلى المتغير PS1 ...مما يعني أن شكل
الغلاف عندما يشتغل سوف يكون بالصورة:


[CompuMe Systeam] فقط...


و ينتظر مني إدخال أي أمر كان...هذا الكلام يقودنا إلى معرفة شيء آخر يتلعق بـ
المتغير PS1 و هو ما يسمى " الأحرف الخاصة بهذا بـ PS1 " و التي عادة تبتدأ بـ "
" ...و من أشهرها ما يلي مع ذكر شرح مبسط عنها:


- h : يظهر إسم المضيف ..عادة localhost

- s : يظهر الغلاف Shell الذي تستخدمه...عادة Bash

- w : يظهر إسم المجلد الموجود به Working Directory

- t : يظهر الوقت

- $ : يظهر علامة $ اذا كنت مستخدما عاديا...و علامة # اذا كنت root

- u يظهر إسم المستخدم الذي يعقد جلسة عمل على ماكينة لينكس


هذه بعد المعاملات المشهورة..و اما طريقة استخدامها فهي على النحو التالي:

شفرة برمجية :

PS1=[u t w ]
في هذا المثال اسندنا قيمة للمتغير PS1 و كانت قيمته هي [u t w ] ...لاحظو
المسافات اللي وضعتها..الحين بعد ما اسندنا له هل القيمة..كيف حيكون شكل الغلاف
عندنا؟ حيكون زي ما هو واضح في الصورة كذا:
[ CompuMe 8:30:22
/home/CompuMe/public_html ]

المتغير الثاني اللي راح نتكلم عنه هو متغير PATH.

فائدة هذا المتغير هي انه يحدد المجلدات التي توجد بها البرامج التنفيذية..نستطيع
ان نشبه بالكود الموجود في ملف Autoexec.bat في ويندوز و هو عبارة عن :

شفرة برمجية :

SET PATH=C:USRBIN;C:WINDOWS;C:WINDOWSCOMMAND

هذا يعني - في ويندوز - اذا كتبت امر Telnet فإن النظام سيبحث عنه في المسار المحدد
(PATH) فإذا وجده يقوم بتشغيله..و إن لم يجده فستأتي لك رسالة Bad command or file
name ! بالرغم ان البرنامج موجود.حيث ستضطر الى كتابة المسار كاملا.. بنفس الفكرة
ذي موجودة في لينكس و المتغير المسؤول عنها هو متغير PATH .


لرؤية قيمة متغير PATH ...اصدر أمر $PATH و سوف ترى المسارات التي اذا احتوت على
برامج فإنه يمكنك كتابة فقط إسم البرنامج دون ذكر مساره كاملا‍.


اذا رغبت في إضافة مسار بالإضافة للمسارات الموجودة..فقط اصدر الأمر:

شفرة برمجية :

PATH=$PATH:/home/CompuMe ; export PATH

في المثال السابق اسندنا قيمة للمتغير PATH و هو كانت قيم الـ PAHT الموجودة سابقا
( لاحظ $PATH ) بالإضافة إلى /home/CompuMe


كان ذي اهم متغيرين لابد ان يعرفها اي مستخدم بالإضافة إلى متغيرات أخرى أترك لكم
فرصة طرحها من غير مشاركاتكم او استفسارتكم.


التغييرات التي قمنا بعملها في المتغيرين PATH و PS1 سوف يكون اثرها واضحا فقط خلال
جلسة العمل فقط و لكن بعد ان تعمل خروج ( إنهاء للجلسة ) و من ثم ترجع و تدخل يوزرك
و الباسوورد فإن التغيرات لن تكون موجودة..إذن ما الحل لكي ابقيها دون ان ترجع
لقيمها الأصلية؟ اقولك لك هنالك طريقتين شائعتين..الأولى قمت بشرحها و هي تعديل
الملفات الأربعة السابقة في اي محرر نصوص و من ثم حفظها..اما الطريقة الثانية في عن
طريق Shell Programmming ..الذي سأتكلم عنه الآن.



7- برمجة الغلاف Shell Programming :

=============

برمجة الغلاف هي لغة مبنية داخل الغلاف..و تمكنك من تنفيذ مهام روتينية كنت تقوم
بتنفيذها يدويا و تاخذ من وقتك الكثير و الكثير...ليس فقط مهام روتينية و انما اكثر
من ذلك بكثير..فقط تكتب برنامج ذي فائدة كبيرة ككتابة برنامج يقوم بحفظ متغيري PATH
و PS1 مما لا تضطر الا تهيئتهما كلما سجلت دخولك.


تعتبر لغة البرمجة المضمنة في الغلاف اقوى من نظيرتها في الويندوز Batch
Programming لما تمتلكه من خيارات عديدة..حيث تتيح لك كتابة دوال Functions و من ثم
استدعائها في برنامجك!

حتى نبدأ بداية طيبة في موضوع برمجة الغلاف سوف اذكر المثال المشهور في كل لغات
البرمجة Hello World و اقوم بشرحه:

شفرة برمجية :

#!/bin/bash

echo "Hello World"

احفظ البرنامج باي اسم..مثلا compume.sh ...لاحظ الإمتداد .sh ...و من ثم اجعله
قابلا للتنفيذ عن طريق إصدار الأمر:


chmod o+x compume.sh


و من ثم قم بتنفيذه بهذه الصورة: ./compume


السطر الأول من البرنامج يحدد الغلاف الذي سيتم من خلاله تفسير البرنامج..و الـ #
لا تعني تعليق Comment ..و لكن بعد هذا السطر اذا وجدت علامة # فإنه ترمز إلى تعليق
Comment .


ما هو التعليق: هو بكل بساطة شرح لخطوات البرنامج ولا يؤثر على سير البرنامج...و
ينصح بإستخدامه حتى تفهم خطوات برنامجك و تكتشف الأخطاء فيه.


السطر الثاني يطبع عبارة Hello World على شاشتك..و ذلك بإستخدام امر echo ..


البرنامج السابق ما هو الاا مقدمة و انما هو عديم الفائدة...الفائدة التي سوف
تلمسها من تعلم هذه اللغة هو هذا المثال:


لو كنت عادة عندما تسجل دخولك للنظام هو عمل mount لقسم windows ...فكنت قبل معرفتك
لهذه اللغة هو كتابة ما يلي:


[root@localhost /]$mkdir /mnt/windows

[root@localhost /]$mount -t vfat /dev/hda1 /mnt/windows


لو لاحظتوا ...رغم ان الشغلة عبارة عن أمرين الا انها سوف تسبب لك الملل و تفقدك
طورك كلما اصدرت هذين الأمرين كلما سجلت دخولك..لكن بإستخدام هذه اللغة سوف يكون
شكل البرنامج هو على النحو التالي:

شفرة برمجية :














#!/bin/bash

if test -d /mnt/windows

then

# Directory exists, so mount and tell me what happend

mount -t vfat /dev/hda1 /mnt/windows

echo "your Windoze part has been mounted!"

else

# Directory does not exist!!

echo "the windows Directory does not exists , try again :- ) "

exit

fi

البرنامج السابق حيعلمنا مفهوم جديد و هو مفهوم اداة الشرط if .


السطر الأول من البرنامج يحدد الغلاف الذي سيتم من خلاله تفسير البرنامج..و الـ #
لا تعني تعليق Comment ..و لكن بعد هذا السطر اذا وجدت علامة # فإنه ترمز إلى تعليق
Comment .


السطر الثاني من البرنامج ابتدأ بعبارة if ..يعني ( إذا ) بعدها جاء امر test متبعا
بالخيار -d و هو يعمل على التأكد من وجود المجلد windows .


السطر الثالث ( التعليق لا يعتبر سطر في الشرح ) ابتدا بعبارة then و التي ترمز الى
ما سيفعله البرنامج حال تحقق الشرح.


السطر الرابع..حنعمل mount لقسم الويندوز بإستخدام برنامج mount .

السطر الخامس يطبع لنا البرنامج عبارة your Windoze part has been mounted! ..مما
يعني اننا نجحنا في العملية.


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

السطر السابع يطبع لنا عبارة the windows Directory does not exists , try again
ما يدل على فشل المهمة و يطلب منا تكرار المحاولة.


السطر السابع يطلع من البرنامج..و آخير امر fi ينهي اداة الشرط if .


بعد ما كتبنا هالبرنامج يكفيك فقط ان تضعه في مكان بحيث عن اقلاع النظام يتم
تنفيذه..راجع موضوع اخي المرشد للإستزادة زر هذه الوصلة:


http://www.c4arab.com/showclass.php...sid=40&clid=379



الآن خلونا نبدأ في كتابة برنامج يجيب على تساؤلنا اللي طرحنا قبل لا نبدا في موضوع
برمجة الغلاف و اللي كان : كيف نثبّت قيم المتغيرات من غير الإضطرار إلى تغييرها كل
مرة نسجل فيها الدخول؟


ما رأيكم لو كتبنا برنامج غلاف بحيث يتم إسناد قيما للمتغيرين PATH و PS1 و بعد ذلك
نضعها في مكان بحيث عن اقلاع النظام يتم تنفيذه بصورة اوتوماتيكية...فكرة صح :-) ما
هو رأيكم بهذا البرنامج البسيط و المفيد:


شفرة برمجية :
#!/bin/bash

# Let $PATH Equal $PAHT:/home/CompuMe

PATH=$PATH:/home/CompuMe ; export PATH

echo " Done , your PATH is $($PATH)

# Let $PS1 Equal [u t w ]

PS1=[u t w ]

echo " Done , your PS1 is $($PS1)

السطر الأول من البرنامج يحدد الغلاف الذي سيتم من خلاله تفسير البرنامج..و الـ #
لا تعني تعليق Comment ..و لكن بعد هذا السطر اذا وجدت علامة # فإنه ترمز إلى تعليق
Comment .


السطر الثاني يسند قيمة للمتغير PATH و التي تسوي قيمة PATH الموجودة حاليا مضافا
إليها مجلد /home/CompuMe


السطر الثالث يطبع لنا عبارة تخبرنا بنجاح العملية..و لو ركزتوا حتلاحون في نفس
السطر عبارة your PATH is $($PATH) ..حيث $ الأولى تخبر الغلاف بأننا نرغب في تنفيذ
امر ما و الذي يأتي بين القوسين..هذا الأمر هو $PATH ..بمعنى ان هذا الأمر يطبع لنا
المسارات المتاحة..و سوف ترى هل فعلا اضيف اليه المجلد /home/CompuMe ..هذه هي
الفكرة التي احببت اوصلها اليكم.


الأسطر السابقة تكرار لما سبق..


الآن سوف اكتب برنامج بطريقة اخرى و انتم سوف تقومون بشرحه ليرغم انه يقوم
بنفس العملية السابقة :


شفرة برمجية :














#!/bin/bash





# function Variables() will be help you to assign $PATH , $PS1

Variables()

{

# Let $PATH Equal $PAHT:/home/CompuMe

PATH=$PATH:/home/CompuMe ; export PATH

echo " Done , your PATH is $($PATH)

# Let $PS1 Equal [u t w ]

PS1=[u t w ]

echo " Done , your PS1 is $($PS1)

}



echo "Calling function Variables()"

# Call the Variables() function:

Variables














و كمان خذوا هالمثال الظريف

شفرة برمجية :












#!/bin/bash

read Name #input your name

case $name in

murshed) echo " bad name :- )" ; halt

CompuMe) echo " is that a name!? :- ) " ; reboot

girl) echo " cool how old are you :- ) "

esac
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://hacker-man.yoo7.com
 
شرح لاوامر الشيل للينك
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
BieNVeNue ChEz VoUs :: هكر نظام Linux اللينكس-
انتقل الى: