*

الــ SHELL

هو برنامج يقوم بالوساطة بينك وبين الــ KERNEL حيث يقوم بتمرير الاوامر التي تكتبها في الـ prompt الى الــkernel .
حيث يعتبر الــ shell مفسر للغة الاوامر في CLI وهي اختصار لـ Command Language Interpreter كما يحتوي الشل على العديد من اﻷوامر الخاصة به .
*
الــ Shell هي بيئة الكوماند ﻻين في اللينوكس … وهذا تعبير مجازي ليس إﻻ … اﻻن سوف أتكلم عن الشل بشكل شبه مفصل حتى نعرف ماهية الشل وكيف يتم التعامل معه .
*
من اﻻن سنفرق بين الـــ shell و الــ terminal فالشل كما قلنا هو مجرد وسيط، أما الــ terminal فهو البرنامج الذي يوفر واجهة لك لكي تكتب فيها أوامر الشل ويقوم هو بتمريرها إلى الــ shell .

.
و أنواع الــ terminal كثيرة على سبيل المثال ﻻ الحصر ,هناك Konsole و X teminal … الخ .
فلو فرضنا أنك قمت بكتابة اﻷمر التالي بالـــ terminal :
pwd
ستلاحظ ان النتيجة المعروضة لديك هو المكان او الجذر الذي أنت موجود فيه اﻻن … كيف تم ذلك ؟

.
باختصار … قام الـ terminal بنقل اﻷمر pwd الى الـ shell وهناك تم فحصه من قبل الشل ، هل هو أمر مبني في الــــ Linux bash shell اذا لم يجده يقوم بالتأكد هل اﻷمر أحد البرامج التطبيقية لديك ” و المقصود بالبرامج التطبيقية هنا هي اﻷوامر الاخرى المستخدمة بالترمينال مثل الامر نسخ او حذف ” … اذا وجدها قام بطباعة النتيجة و اﻻ يعرض لك رسالة يخبرك فيها بان الامر غير موجود لديه او انه غير معرف .

*

من المعلوم ان الــ shell يحتوي على لغة تفسيرية قوية جدا وهي مشابهة الى حد ما بعض لغات البرمجة … كأن تنشأ Looping or functions or arrays or variables
.
يبدأ الشل بالعمل بعد أن تدخل الى النظام بنجاح ويظل هو الوسيلة الوحيدة بينك وبين نواة النظام “kernel¨ .
.
اذا كان هناك أكثر من مستخدم في الجهاز … سيقوم الشل بإنشاء شل افتراضي لكل مستخدم
ويخزن هذا الشل الافتراضي للمستخدمين في ملف اسمه system passowrd file او اسمه /etc/password ويحتوي هذا الملف الـــ ID للمستخدمين باﻹضافة الة نسخة مشفرة من كلمة السر .
.
وهناك ثلاث أنواع رئيسية للـــ Shell :

.
Bourne Shell
ويعرف اختصارا باسم sh وهو الشل الاصلي الخاص بالليونكس … ويعتبر الأفضل ، إﻻ أنه ﻻ يوفر تفاعل كافي بين النظام و المستخدم .
.
C shell
ويعرف اختصار باسم csh وهو اكثر تفاعل بين النظام و المستخدم عن سابقه لكن الواجهة البرمجية له ليست أفضل من سابقه . وسمي بالــ C shell ﻷن أوامر لغة البرمجة فيه قريبة الى حد ما من لغة السي .
.

Korn shell
ويعرف اختصارا باسم ksh وهي تضم جميع المزايا من النوعين السابقين
حيث أصبح لدينا شل يتميز بالتفاعل وقوة واجهة برمجية .

.
ويمكن اعتبار الأنواع السابقة هي الأساس للشل اللاحقة، وهو امتداد و تطوير لــ sh وهو يحتوي على واجهة برمجية قوية تمكنك من التفاعل مع النظام . وما يميز هذا النوع انه يوفر لك تسهيلات كبيرة عند كتابة الاوامر او الانتقال من مسارات مختلفة داخل النظام .

*

قم بفتح اي تطبيق للشل واكتب اﻷمر التالي

كود PHP:
linux:/home/bennjem # cd

.

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

كود PHP:
linux:/ #

.

فلو كتبت الامر السابق و اتبعته بزر tab مثل ماهو موضح بالشكل التالي
.

كود PHP:
linux:/ # cd /  [tab]

.

ستلاحظ ان النتيجة هي قام الشل بعرض لك جميع ملفات النظام التي انت وقفت امامها … كما بالشكل التالي :
.

كود PHP:
linux:/ # cd /
bin/      etc/      media/    proc/     srv/      tmp/      windows
/
boot/     home/     mnt/      root/     sys/      usr
/
dev/      lib/      opt/      sbin/     tftpboot
/ var/

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

.

كود PHP:
linux:/ # cd /m

.

ستلاحظ ان النتيجة هي
.

كود PHP:
media/ mnt/

.

ومن مميزات الــ bash انه يحتوي على ذاكرة يقوم بتخزين الاوامر التي أدخلتها اليه في ملف يسمى
bash_history فلو حركت الاسهم بالشل أعلى و اسفل ستشاهد انه يقوم بعرض لك آخر الاوامر التي أدخلتها اليه … اما اذا أحببت أن يعرض لك جميع اﻷوامر التي أدلختها نفذ الامر التالي :
.

كود PHP:
linux:/ # history
1  alsamixer
2  lsamixer
3  alsamixer
4  mkdir /usr/src/
alsa
5  cp /home/bennjem/alsa-driver-1.0.9rc4a.tar.bz2 /usr/src/
alsa
6  cd /usr/src/
alsa
7  ls
8  tar jxvf alsa-driver-1.0.9rc4a.tar.
bz2
9  ./configure –with-sequencer=yes && 
make
10  ./
configure
11  cd /usr/src/alsa/alsa-driver-
1.0.9rc4a
12  ./configure –with-sequencer=yes && 
make
13  make install
14  ./
snddevices
15  alsamixer
16  test alsamixer
17  -
o soundcard
18  modprobe snd_hda_intel
19  modprobe sdn_hda_core
20  modprobe snd_hda_intel model=
asus
21  asus 3-
jack
22  F1734 2-
jack
23  mkdir /usr/src/
realtek
24  cp /home/bennjem/realtek-linux-audiopack-3.5-6.tar.bz2   /usr/src/
realtek
25  cd /usr/src/
realtek

.

لمشاهدة أو عرض الملفات عن طريق الــ shell استعمل احد الامرين less او cat
.

كود PHP:
bennjem@linux:~> cat filename.txt
كود PHP:
bennjem@linux:~> less filename.txt

*

إنشاء و تحرير الملفات

ﻹنشاء أو تحرير أي ملف عن طريق الــ shell فقط قم بكتابة اي اسم اي برنامج لتحرير الملفات متبوعة باسم الملف … هنا سأستخدم برنامج emacs
.

كود PHP:
bennjem@linux:~> emacs filename.txt

.

نقل الملفات
نستعمل هنا الامر mv لنقل الملف او المجلد او لتغير اسمه او تغير نوعه … مثل
.

كود PHP:
bennjem@linux:~> mv filename1.txt    mv filename1.txt
كود PHP:
bennjem@linux:~>mv   filename.txt    filename.html
كود PHP:
bennjem@linux:~> mv filename1.txt  fiename2.txt

.

نسخ الملفات

لنسخ الملف نستعمل الامر cp
.

كود PHP:
bennjem@linux:~> cp    filename1.txt   filename2.txt

.

أيضا بمكانك نقل الملف من مجلد الى آخر … فقط قم بوضع الباث قبل الملفين .
ولنقل المجلد من مكان الى آخر … فقط نضيف على الامر السابق -R
.

كود PHP:
bennjem@linux:~> cp  /home/bennjem/folder1    /home/bennjem/folder2

.

حذف الملفات
لحذف الملفات نستعمل الامر rm
.

كود PHP:
bennjem@linux:~> rm filename.txt

.

إنشاء مجلد جديد
ﻹنشاء مجلد جديد نستعمل اﻷمر mkdir
.

كود PHP:
bennjem@linux:~> mkdire  folder
كود PHP:
bennjem@linux:~> rm -r  folder

.

الحصول على مساعدة عن طريق الشل
الأمر man يوفر لك مكتبة متكاملة عن الأوامر المتوفرة بالشل وكيفية استعمالها
.

كود PHP:
bennjem@linux:~>man rm
كود PHP:
bennjem@linux:~>man cd
كود PHP:
bennjem@linux:~>man cp