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

مقدمة عن أنواع الشيل وبعض الأوامر الهامة فى لينوكس

اذهب الى الأسفل

مقدمة عن أنواع الشيل وبعض الأوامر الهامة فى لينوكس Empty مقدمة عن أنواع الشيل وبعض الأوامر الهامة فى لينوكس

مُساهمة من طرف نواف الفهمي الجمعة 22 أبريل 2011, 10:39


مقدمة عن أنواع الشيل وبعض الأوامر الهامة فى لينوكس 45264

اخواني الكرام

مقدمة عن أنواع الشيل وبعض الأوامر الهامة فى لينوكس 45268


مقدمة عن أنواع الشيل وبعض الأوامر الهامة فى لينوكس 46572

مقدمة عن أنواع الشيل وبعض الأوامر
الهامة فى لينوكس


مقدمة عن أنواع الشيل وبعض الأوامر الهامة فى لينوكس 46572


أنواع الShell الموجودة فى نظام التشغيل

LINUX


مقدمة

قبل أن نتحدث عن انواع الShell الموجودة فى اللينوكس يجب علينا أولا أن
نفهم ما هو الShell .

مفهوم ال Shell :

الshell هو برنامج يقوم بالوساطة بينك وبين اللينوكس أو بالتحديد بين
المستخدم وبين نواة اللينوكس

والتى تسمى الكيرنل (Kernel) حيث يقوم ال Shell بتفسير ما تقوم بكتابته فى
ال prompt ويقوم تمريره الى النواة (Kernel).

ويمكن اعتبار ال Shell على أنه مفسر لغة أوامر Command Language
Interpreter

كما أنه يحتوى على العديد من الأوامر Commands الخاصة به ويمكنه أيضا
الأستفادة من

الملحقات والبرامج الموجودة فى اللينوكس ( سنوضح ذلك فيما بعد) .

أين أكتب اوامر الشيل ؟

يجب أولا ان تفرق بين برنامجيين الأول يسمى Shell والآخر يسمى Terminal .

فالShell هو مانتحدث عنه أما ال Terminal فهو البرنامج الذى يقوم بتوفير
واجهة لكى تكتب فيها أوامر ال Shell ويقوم هو بتمريرها الى الShell

ويوجد أكثر من برنامج للتيرمنال Terminal مثل Konsole , Eterm ,Aterm ,

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

وكما ذكرنا سابقا أن الShell يقوم بتفسير الأوامر فعلى سبيل المثال اذا قمت
بكتابة الأمر التالى :
( اذا كنت لا تعرف أين تكتب الأوامر ارجع الى المقدمة )



اقتباس:


[ahmed@localhost ahmed]$ pwd
/home/ahmed
[ahmed@localhost ahmed]$


لقد قمت بكتابة الأمر pwd وهو اختصار ل print working directory وهو
يقوم بطبع المجلد (المسار) الحالى الذى تقف عليه .

ما أريده هنا هو أن أوضح لك أن الأمر pwd أمر مبنى فى اللينوكس باش شيل
(Linux bash Shell) .

لكن هناك أوامر مثل cp وهو اختصار ل copy أو rm وهو اختصار ل remove

فهذان الأمران يعتبران برامج تنفيذية منفصلة وموجودة فى أحد المجلدات
الخاصة بنظام ملفات اللينوكس مثل /usr/bin/ .

أرجو الا تكون قد حدث لك شيئا من التداخل و للتوضيح أكثر :

سأشرح لك المراحل التى يقوم بها ال Shell لكى يقوم بتنفيذ الأمر الذى نفذه
المستخدم :

-1 أولا يقوم الشيل بفحص الأمر لكى يتأكد اذا ما كان أحد الاوامر التى
المبنية فيه وإن لم يجده يقوم بالتأكد من أن الأمر أحد البرامج التطبيقية

( والبرامج التطبيقية ربما تكون أحد البرامج الموجودة فى النظام مثل الأمر
ls أو rm . أو ربما يكون أحد البرامج التى تكون قد ثبتها فى النظام مؤخرا )


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

وإن لم يجده أيضا فى البرامج التطبيقية يقوم الشيل بإظهار رسالة تفيد بإن
الأمر خاطىء أو اظهار رسالة خطأ .

ويجدر بنا الأشارة هنا إلى أن الShell له ميزة أخرى وهى أنه يحتوى على لغة
تفسيرية قوية جدا .

وهذه اللغة تحتوى على العديد من الوظائف والأمكانيات كالتى توجد فى لغات
المستوى المتقدم

High level Language مثل Functions ,looping ,arrays and variables .

ويوجد سؤال هنا يجب أن نجيب عليه وهو كيف يبدأ الShell فى العمل ؟؟؟

والإجابة هى أن الShell يقوم بالعمل بعد أن تدخل الى النظام بنجاح Logged
into the System

ويظل الشيل هو الوسيلة الرئيسية بينك وبين نواة النظام حتى تخرج من النظام
.

وكما يظهر عنوان هذه المقالة ( أو سمها كما تشاء ) يتضح أن هناك أنواع ل
Shell ولكل مستخدم وجهة نظره الشخصية

لذلك يمكنك اختيار أى نوع من الShell كما تشاء ولذلك اذا فرضنا أن لديك
أكثر من مستخدم لجهازك فكل مستخدم لديه Shell أفتراضى خاص به

ويخرن هذا الشيل الأفتراضى لكل المستخدمين فى ملف اسمه System password
file أو /etc/passwd/

ويحتوى هذا الملف أيضا على الID لكل المستخدمين باإضافة الى نسخة مشفرة
لكلمة السر واسم البرنامج الذى يعمل تلقائيا بعد الدخول الى النظام .

والآن نأتى الى الموضوع الرئيسيى وهو أنواع الShell :

يوجد العديد من برامج الShell المختلفة سواء كان ذلك فى نظام التشفيل UNIX
أو أخونا LINUX .

ومن هذا البرامج Bourne Shell ويعرف اختصارا بإسم (sh) ويوجد أيضا C Shell
ويختصر ب (csh)

ويوجد ال Korn Shell ويختصر ب (ksh) ولكل من هذه البرامج المزايا والعيوب
على حد سواء :

-1 Bourne Shell تمت كتابته بواسطة رجل يدعى Steven Bourne وهو الشيل
الأصلى الخاص بالUNIX

وموجود فى كل أنظمة ال UNIX ويعتبر أفضل الShells فى الShell programming
لكنه لايوفر تفاعلا بين المستخدم والنظام كما يفعل غيره من ال Shells .

-2 C Shell كتب بواسطة Bill Joy وهو أكثر تفاعلا مع المستخدم من سابقه ولكن
يعتقد الكثير أن الواجهة البرمجية له programming Interface

ليست بالقوة والجدارة مثل الموجودة فى Bourne Shell

ولكن الكثير من مبرمجى لغة ال C يفضلونه لأن الSyntax ل Programming
Language الخاصة به قريب من لغة ال C . ولذلك سمى ب C Shell .

Korn Shell-3 تمت كتابته بواسطة Dave Korn وقام هذا الرجل بعمل شىء رائع
جدا فقد قام بجمع المزايا الموجودة فى كلا من ال csh

و الbourne shell وقام بجمعهم فى شىء واحد متوافق مع ال Bourne Shell يتمتع
بالتفاعل والقوة وقوة واجهته البرمجية .

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

ما سنركز عليه فى الآتى هو ثلاث برامج للShell هى:

tcsh وهو امتداد للcsh و bourne again shell والذى يختصر ب bash وهو امتداد
ل sh وأخيرا Public Domain Korn Shell وهو امتداد ل Ksh .

ويجب ان تعلم أن الbash هو ال shell الأفتراضى لمعظم أنظمة اللينوكس .


The Bourne Again Shell (Bash)

BASH وهو أمتداد وتطوير ل SH وتمت اضافة بعض الأشياء الجديدة والأضافات
التى حسنت من ال Bourne Shell كما أنه يحتوى على بعض مميزات الKsh و Csh .

كما أن ال bash يحتوى على واجهة برمجية قوية ومرنة كما أنه يمكنك من
التفاعل مع النظام .

ولل BASH مميزات عدة منها أنه يوفر لك تسهيلات كبيرة عند كتابة الأوامر أو
مسارات المجلدات التى تود الأنتقال اليها فى لحظة ما .

ولتوضيح ذلك افتح برنامج الTerminal الذى تستخدمه وكما قلنا سابقا أن
التيرمينال هو البرنامج الذى تكتب فيه أوامر ال Shell

ومن أمثال الTerminal برنامج Konsole وبرنامج Eterm و Kterm و Aterm
والعديد من البرامج التى تختلف فيما بينها فى كيفية توفير واجهة مريحة
للمسخدم .

نفذ التالى :

أكتب الأمر


اقتباس:


[root@localhost ahmed]# cd /
[root@localhost /]#


وبالتالي تكون واقفا على نظام الملفات الرئيسى .

أكتب نفس الأمر السابق لكن متبوعا بزر الtab وانظر ماذا سيحدث


اقتباس:


[root@localhost /]# cd [tab]
bin dev home lib .mozilla proc sbin
tmp var
boot etc initrd mnt opt root sys
usr


بل جرب الأمر التالى

اكتب الأمر cd متبوعا ب حرف s ثم اضغط tab


اقتباس:


[root@localhost /]# cd s [tab]
sbin sys
[root@localhost /]#


نعم فقد قام bash بعرض كل المجلدات الموجودة فى هذا المجلد والتى
تبدأ بحرف s .

ملحوظة: اذا كان المجلد الحالى كان لا يحتوى الا على مجلد واحد يبدأ حرف S
كان الBash سيقوم بالدخول الى هذا المجلد تلقائيا .

فمثلا لو استبدلت حرف s السابق بحرف m ثم الضغط على tab سيدخل الى مجلد
/mnt تلقائيا بعد ضغط Enter .


أتمنى أن تكون قد لاحظت فائدة هذه الإمكانية فى ترحمك من حفظ الكثير من
اﻷوامر كما سنرى :

أكتب ba فى التيرمينال ثم اضغط tab ستجده يظهر لك كل الأوامر والبرامج التى
تبدأ بحرفى ba .
شىء رائع أليس كذلك

وهذه الأمكانية فى الBash كفيلة بسد أفواه المتكلمين والجهلاء الذين يتهمون
اللينوكس بالصعوبة بسبب كثرة الأوامر ربما يكون صحيحا أن الأوامر كثيرة

لكن لو أنك تتذكر حرفا واحدا من الأمر انحلت المشكلة !!!!!

وليس هذا فحسب بل هناك ما يسمى ب Wild Card. لو كنت قد تعاملت مع جمل ال
SQL وهى جمل الأستعلام وخصوصا مع جملة select

فإذا أردت مثلا أن تختار السجلات التى يبدأ أسم العميل فيها بحرف a ماذا
كنا نفعل ؟؟؟ بكل بساطة كنا نكتب التالى :

select * from [table name] where name like '*a'

نحن هنا لا نتحدث عن جمل الأستعلام ولكن نتحدث عن مرونة ال Bash فجملة
الأستعلام السابقة تقوم بإرجاع القيم التى تبدأ بحرف الa فمثلا لو كان
بالجدول

ahmed , ali , alias ,amgad,arkan ,afrakosh ,.............

فستقوم الجملة السابقة بإرجاع جميع الأسماء السابقة نفس النظام هنا فى
الباش يمكنك كتابة التالى
cd m *

فكتابة أو وضع * قبل أى حرف سيجعل الباش يقوم بالبحث عن كل المجلدات ( فى
هذه الحالة مجلدات ربما تكون أوامر فى وضع آخر) التى تبدأ بحرف m

وتنتهى بأى عدد من الحروف أو الكلمات ولو وجد مجلدا واحدا فقط هو الذى يبدأ
بحرف m سيدخل إليه مباشرا أما ان كان هناك أكثر من مجلد

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

لذلك فهذه الطريقة ليست عملية فى الحالة الأخيرة لذلك فإن ال Wildcard *
يستخدم فى حالة التعامل مع الملفات المتشابهة فى الأمتداد

على سبيل المثال :

لو أفترضنا أن لديك مجلدا بداخله هذه الملفات

first.doc second.doc third.doc ahmed guid

ثم أنك تريد أن تقوم بطبع الملفات التى تنتهى بالأمتداد .doc فهناك طريقتين
أما أن تقوم بكتابة اسماء الملفات كلها أو تقوم بتنفيذ الآتى بكل سهولة


اقتباس:


[root@localhost etc]# lpr *.doc


فهذه الطريقة تغنى عن


اقتباس:


[root@localhost etc]# lpr first.doc second.doc third.doc


كما يوجد العديد من Wild card Pattern من أمثال ( ? ) الذى يقوم
بالأستعاضة عن حرف واحد فقط .
فكما قلنا سابقا يقوم * بالتعويض عن أى عدد من الحروف أو الكلمات لكن ؟
يقوم بالتعويض عن حرف واحد فقط .

ومن مميزات ال bash ايضا الذاكرة أو ال History حيث أنه يقوم بحفظ الأوامر
التى أدخلتها فى قائمة تخزن هذه القائمة داخل ملف

يسمى فى الوضع الأفتراضى .bash_history حيث أنه عند دخولك للنظام يقوم
الbash بملىء هذه الذاكرة من هذا الملف ويوجد هذا الملف فى مجلد home
للمستخدم الحالى .

ملحوظة : هذا الملف من الملفات التى تبدأ ب (.) وتسمى النقطة هذه بال
period وهذه الملفات يقوم النظام بإنشاءها وتكون مخبأة ( Hidden)

ولكى تراها يجب عليك اظهار الملفات المخفية أو كتابة الأمر ls مع الخيار
a- أى يكون الأمر هكذا


اقتباس:


[ahmed@localhost ahmed]$ ls -a
./ .dmrc .kaffeine/ .openoffice/
../ .esd_auth .kde/ .qt/
.adobe/ .fonts/ .kderc
.recently-used
Andal/ .fonts.cache-1 .licq/ rhl10_files/
.appletviewer .fonts.conf .lyx/ rhl10.htm
.assistant/ .gaim/ .Mail/ .screenrc
.audacity .gconf/ .mailcap .sversionrc
.bash_history .gconfd/ .mcop/ .thumbnails/
.bash_logout .gftp/ .mcoprc tmp/
.bash_profile .gnome/ .MdkOnline/ .tmsnc/
.bash_profile~ .gnome2/ .metacity/ .totem.ahmed=
.bashrc .gnome2_private/ .mime.types .Trash/
core.5341 .gnupg/ .mozilla/ .Xauthority
.csmashrc .gstreamer-0.8/ .mplayer/ .xine/
.DCOPserver_localhost__0 .gtkrc-1.2-gnome2 .nautilus/ .xmms/
.DCOPserver_localhost_:0@ .i18n* .net_applet .xmovierc
.desktop* .ICEauthority .netbeans/
.xsession-errors
Desktop/ JavaApplication1/ .oofficerc*
[ahmed@localhost ahmed]$


ويمكنك استدعاء الأوامر المخزنة لديك فى الHistory باستخدام أزرار UP
و Down .

حيث يقوم زر Up باستعراض أخر أمر كتبته ثم الذى يليه وهكذا .

كما يمكنك استخدام زر down لعمل العكس كما أنه يمكن التعديل فى الأمر الذى
استدعيه من ال History باستخدام زرى Left و Right .

كما يمكنك عرض ال History باستخدام الأمر history الذى يقوم بعرض الhistory
بهذه الطريقة


اقتباس:


[ahmed@localhost ahmed]$ history
87 mnt
88 exit
89 ksh
90 exit
91 log
92 exit
93 shell
94 bash
95 exit
96 kwrite fstab
97 su
98 kdf
99 su
100 kde
101 su
102 acm
103 bsh


تلاحظ أنه قد قام بعرض كل ما تم كتابته سابقا ولكن ماذا لو أردت مثلا
عرض آخر 10 أوامر قد كتبتها
ماعليك الا أن تكتب الأمر السابق متبوعا برقم 10 هكذا


اقتباس:


[ahmed@localhost ahmed]$ history 10
131 pwd
132 dir
133 clear
134 free
135 ls -a
136 free
137 ls
138 history
139 history 5
140 history 10
[ahmed@localhost ahmed]$


ولو أردت آخر خمس أوامر يمكنك كتابة رقم ٥ بعد الأمر History






منقول منedu.arabsgate





نواف الفهمي
مـشـرف
مـشـرف

عدد المساهمات : 425
نقاط : 6614
السٌّمعَة : 11
تاريخ التسجيل : 04/02/2010

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

- مواضيع مماثلة

 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى