هام جدا لمستخدمي بريد الياهو من الأعضاء



>>>>>>>>>> للتسجيل في الموقع أضغط هنا <<<<<<<<<<


عـودة للخلف   منتديات كتاب العرب > كلية تكنولوجيا المعلومات > نظام التشغيل لينوكس > دروس وشروحات اللينوكس


الرد على الموضوع
 
خيارات الموضوع طريقة العرض
  #1  
قديم 2006-03-08, 04:30 PM
 
مقدمة عن أنواع الشيل وبعض الأوامر الهامة فى لينوكس

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

أنواع ال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 .


الى اللقاء بحول الله


الرد باقتباس
عدد 4 من الطلاب تقدموا بالشكر لكاتب الموضوع Arabian Penguin علي هذه المشاركة الطيبة :
ysh2006 (2007-12-29), إسراء (2007-11-19), فادي بدر (2008-05-06), محمد-الوفي (2008-06-08)
  #2  
قديم 2006-03-08, 06:03 PM
الصورة الشخصية لـ الهاشمي  
بارك الله فيك على الموضوع الرائع والجهد الأروع
وجزاك الله خيرا
تقبل تحياتــــي وتقديري

الرد باقتباس
  #3  
قديم 2006-03-08, 06:47 PM
الصورة الشخصية لـ محمد الفرح  
موضوع جميل
جزاك الله كل خير
والى الامام

الرد باقتباس
  #4  
قديم 2006-03-08, 06:55 PM
 
بارك الله فيك
تفيدنا في السرفرات هذه أخي
طبعا سرفرات اللينوكس
شكرا لك

الرد باقتباس
  #5  
قديم 2006-03-13, 09:25 AM
الصورة الشخصية لـ RedMan  
جزاك الله خيرا اخي شركح بسيط و معلومات مهمة

الرد باقتباس
  #6  
قديم 2006-03-14, 09:29 PM
 
رائع جدا ..

ننتظر التكملة أيها البطريق المبدع ..

الرد باقتباس
  #7  
قديم 2006-03-14, 11:50 PM
 
مقدمة عن بعض الأوامر المهمة
أولا يجب أن تعرف أن هناك شيئا يسمى الأمر Command وهناك شيئا آخر يسمى
Command Options أو خيارات الأمر.
وتستخدم Command Options لتحسين أداء الأمر أو إضافة مميزات جديدة الى الأمر الأصلى .

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

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

كود:
[ahmed@localhost ahmed]$ ls
Desktop/  JavaApplication1/  tmp/
[ahmed@localhost ahmed]$
لكن جرب اضافة الخيار a- مع الأمر ls وفى نفس المكان السابق دون تغيير :

كود:
[ahmed@localhost ahmed]$ ls -a
./                         .dmrc              .kde/         .recently-used
../                        .fonts/            .kderc        .screenrc
.audacity                  .fonts.cache-1     .mailcap      .sversionrc
.bash_history              .fonts.conf        .mcop/        .thumbnails/
.bash_logout               .gconf/            .MdkOnline/   tmp/
.bash_profile              .gconfd/           .mime.types   .Xauthority
.bash_profile~             .gnome/            .mozilla/     .xine/
.bashrc                    .gnome2/           .mplayer/     .xmms/
.DCOPserver_localhost__0   .gnome2_private/   .netbeans/    .xsession-errors
.DCOPserver_localhost_:0@  .ICEauthority      .oofficerc*
.desktop*                  JavaApplication1/  .openoffice/
Desktop/                   .kaffeine/         .qt/
[ahmed@localhost ahmed]$
بالتأكيد ربما تكون قد لاحظت الفرق بين الأمر الأول بدون الخيار والأمر مع الخيار .
عندما استخدمنا ls بالخيار a- ( لاحظ وجود مسافة بين ls و a- ولاحظ أيضا أنه لاتوجد مسافات بين (-)
و (a) ) قام بعرض التالى :
كود:
[ahmed@localhost ahmed]$ ls -a
./                         .dmrc              .kde/         .recently-used
../                        .fonts/            .kderc        .screenrc
.audacity                  .fonts.cache-1     .mailcap      .sversionrc
.bash_history              .fonts.conf        .mcop/        .thumbnails/
.bash_logout               .gconf/            .MdkOnline/   tmp/
.bash_profile              .gconfd/           .mime.types   .Xauthority
.bash_profile~             .gnome/            .mozilla/     .xine/
.bashrc                    .gnome2/           .mplayer/     .xmms/
.DCOPserver_localhost__0   .gnome2_private/   .netbeans/    .xsession-errors
.DCOPserver_localhost_:0@  .ICEauthority      .oofficerc*
.desktop*                  JavaApplication1/  .openoffice/
Desktop/                   .kaffeine/         .qt/
[ahmed@localhost ahmed]$
فقد قام الخيار a- بجعل ls يقوم بعرض جميع الملفات حتى التى تحتوى على (.) بأولها وتسمى هذه
النقطة بالPeriod والملفات التى تبدأ بالPeriod فى معظمها تكون ملفات من صنع اللينوكس (ملفات يكونها النظام الحاكم عفوا يكونها نظام التشغيل ) ومن هنا يمكننا القول بأن الخيارات التى تضاف الى الأمر تعطى الأمر بعض الأمكانيات الجديدة .

والأمر ls لديه الكثير من الخيارات (Options) الأخرى مثل (U-) وأرجو أن تجربه أنت الآن .

ويجدر بنا الأشارة هنا أيضا الى أن ال (-) وتسمى dash ليست جزءا من ال Command Option ولكنها تقوم باخبار الشيل أيا كان نوعه بأن كل حرف سيأتى بعدها على أنه خيار للأمر .

ويمكنك وضع أو تشغيل أكثر من خيار مرة واحدة :
على سبيل المثال استخدمنا قبل ذلك الخيار a مع الأمر ls واستخدمت أنت الخيار U مع نفس الأمر
ماذا أذا أردنا تنفيذ الأثنين معا ؟؟
بكل بساطة أكتب الأمر متبوعا بمسافة ثم ال dash ثم الخيارات التى تريدها متتالية .

كود:
  [ahmed@localhost ahmed]$ ls -aU
ماذا حدث ؟؟؟

نرجع الى البداية عندما طلبت منك استخدام الخيار U- مع ls قام بعرض كل الملفات الموجودة لكن دون ترتيب فالأمر ls ( بمفرده) يقوم بعرض الملفات مرتبة ترتيبا هجائيا .

لذلك اذا نفذت الأمر ls مع الخيار U و a سيقوم بعرض الملفات دون استثناء حتى التى تحتوى على الPeriod ويقوم بعرضها غير مرتبة .

كود:
[ahmed@localhost ahmed]$ ls -aU
./                .gnome/                    Desktop/        .audacity
../               .Xauthority                .fonts/         .mozilla/
tmp/              .gnome2/                   .thumbnails/    .netbeans/
.screenrc         .gnome2_private/           .ICEauthority   JavaApplication1/
.bash_logout      .gconf/                    .bash_history   .mime.types
.bash_profile     .gconfd/                   .fonts.conf     .mailcap
.bashrc           .qt/                       .kderc          .openoffice/
.dmrc             .DCOPserver_localhost__0   .bash_profile~  .sversionrc
.desktop*         .mcop/                     .xine/          .oofficerc*
.xsession-errors  .fonts.cache-1             .xmms/          .adobe/
.MdkOnline/       .DCOPserver_localhost_:0@  .recently-used
.kde/             .mplayer/                  .kaffeine/
[ahmed@localhost ahmed]$
ربما تكون قد لاحظت الفرق ولاحظ هنا أن ترتيب الخيارات لا يهم سواء كتبت aU- أو كتبت Ua- فلهما نفس النتيجة .
ويمكنك أيضا استخدام طريقة Multiple Option وذلك بفصل كل خيار عن الآخر باستخدام dash (-) عن الخيار السابق .
مثلا لتنفيذ آخر أمر بهذه الطريقة يكون على الشكل التالى :
كود:
[ahmed@localhost ahmed]$ ls   -a   -U
ويجب أن نشير الى بعض الخيارات المهمة أيضا مع الأمر ls وهى:
-1 الخيار (t) :-
ففى بعض الأحيان تريد أن تعرف متى تم عمل ملف ما ومتى تم التعديل فيه . ويمكنك الخيار (t) من
عرض الملفات وترتيبها بالتاريخ بدلا من ترتيبها هجائيا فيقوم بعرض الملفات الجديدة أولا .

كود:
[root@localhost / ]# ls -t
root/  tmp/  boot/  initrd/  sys/   home/  lib/   var/
dev/   usr/  etc/   opt/     proc/  bin/   sbin/  mnt/
[root@localhost /]#
-2 الخيار ( r ) :-
يقوم بعرض الملفات بطريقة عسكية ويتم استخدامه مع الخيار t حتى يقوم بعرض الملفات وترتيبها من الأقدم الى الأحدث لاحظ :
كود:
[root@localhost /]# ls -tr
mnt/  sbin/  bin/   proc/  opt/     etc/   usr/  dev/
var/  lib/   home/  sys/   initrd/  boot/  tmp/  root/
[root@localhost /]#

الرد باقتباس
  #8  
قديم 2006-03-15, 12:07 AM
 
بسم الله الرحمن الرحيم

تناولنا سابقا أمر ls وذكرنا معظم الخيارات التى تأتى معه والآن بإذن الله تعالى سنقدم بعض الأوامر الأخرى التى ربما لا يمكنك الإستغناء عنها فى تعاملك مع Shell .

أولا يجب أن أذكر لك معلومة يجب أن تعرفها جيدا وهى أن الShell يوفر لك أمران Two Commands فى غاية الاهمية وهما man و info .

man تعنى manual وهى تمكنك من عرض جميع المعلومات عن أمر معين أقول جميع المعلومات يعنى كأنه كتيب تشغيل لأحد الأجهزة التى اشتريتها مؤخرا !!!!!!!!!!!
ويستخدم هكذا :
كود:
[ahmed@localhost ahmed]$ man ls
فقط أكتب man وبعده اسم الأمر الذى تريد معلومات عنه ( هنا استخدمنا ls كمثال ) وكان ناتج الأمر السابق :
كود:
LS(1)                            User Commands                           LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information  about  the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuSUX nor --sort.

       Mandatory arguments to long options are  mandatory  for  short  options
       too.

       -a, --all
              do not hide entries starting with .

       -A, --almost-all
              do not list implied . and ..

       --author
              print the author of each file

       -b, --escape
              print octal escapes for nongraphic characters
وتلاحظ أن الصفحة ممتلئة اضغط على زر Down و Up للنزول والصعود بين الأسطر أو استخدم Page Down و Page Up للنزول بالصفحات وللخروج اضغط على زر Q .

أمر info له نفس الوظيفة لكن مع اختلاف التنسيق الذى يعرض به البيانات .
جرب الأتى info ls ونفس التحكم بالصفحة كما هو الحال مع man .

الفرق بين man و info هو أن man يقال أنه من أيام UNIX أما info مستحدث لكن لا توجد مشكلة فكلاهما برامج حرة ( man,info برامج وليسوا أوامر ) .

نعود الى موضوع الأوامر المهمة والآن نحن بصدد التحدث عن الأمر cd :

ربما تتذكر نظام التشغيل DOS وتتذكر هذا الأمر أيضا وهو يعنى Change Directory . ربما من الأسم تكون قد فهمت عمل هذا الامر فهو يقوم بتغير المجلد الحالى الذى تقف عليه .
فمثلا لو أنك تقف على المجلد ahmed هكذا :

كود:
[ahmed@localhost ahmed]$
وأردت الدخول الى المجلد ali الموجود داخل المجلد ahmed ماذا تفعل اذن ؟؟؟؟؟
بكل سهولة أكتب الامر cd متبوعا بأسم المجلد الذى تريد الدخول اليه هكذا

كود:
[ahmed@localhost ahmed]$ cd ali
[ahmed@localhost ali]$
( لاحظ أن المجلد على يجب أن يكون موجودا )
وللعودة مرة اخرى الى المجلد الذى يحتوى المجلد الذى أنت بداخله أكتب الأمر cd متبوعا بنقطتين هكذا
كود:
[ahmed@localhost ali]$ cd ..
[ahmed@localhost ahmed]$
ماذا إذا أردت الذهاب إلى بيتك؟؟
أكتب الأمر cd متبوعا ب ~ وستجد نفسك فى بيتك !!!!
كود:
[ahmed@localhost usr]$ cd ~
[ahmed@localhost ahmed]$
للذهاب الى ملفات النظام اكتب الأمر
كود:
[ahmed@localhost ahmed]$ cd /
[ahmed@localhost /]$
أمر mkdir

لو كنت تريد انشاء مجلد directory جديد استخدم الأمر الأمر mkdir (وهو أختصارا لكلمة make directory ) متبوعا بأسم المجلد الذى تريد انشاؤه هكذا:

كود:
[ahmed@localhost ahmed]$ mkdir arabteam
[ahmed@localhost ahmed]$ cd arabteam 
[ahmed@localhost arabteam]$
أمر rmdir

وهو اختصارا لكلمة remove directory ويستخدم لحذف مجلد ويستخدم هكذا:

كود:
[ahmed@localhost arabteam]$ rmdir dir_name
كل الكلام السابق بالنسبة للمجلدات ماذا عن الملفات ؟؟

الأمر touch يعطيك امكانية انشاء (ملف) فارغ جديد بالإمتداد الذى تريده هكذا:

كود:
[ahmed@localhost arabteam]$ touch Barq
[ahmed@localhost arabteam]$ touch Kaboos
[ahmed@localhost arabteam]$
نعم فلقد قمنا بانشاء ملفين اسمهما Barq و Kaboos .
ولو قمت بكتابة اﻷمر ls لرأيت الملفين .

مثال آخر :
لكتابة برنامج C /C++ أو جافا Java أو حتى ملف نصى Text يجب ان يكون للملف امتداد معين فلو كان ملف C كان الإمتداد c. ولو كان جافا كان الأمتداد java. لو كان text يبقى الأمتداد txt. نختار ملف واحد من السابق مثلا تريد انشاء ملف جافا بكل سهولة اكتب الأمر التالى :

كود:
[ahmed@localhost arabteam]$ touch Main.java
ربما تسألنى سؤالا :
ما الفائدة التى استفدتها من عمل ملف بأسم معين ولكن ليس بداخله أى شىء ؟؟؟

الرد باقتباس
  #9  
قديم 2006-03-15, 12:09 AM
 
والأجابة هى انك تسرعت قليلا !
فكما تمكنا من عمل الملف سنتمكن بإذن الله من ملىء الملف والكتابة والتعديل وعرض ما فيه بإذن الله .

نبدأ أولا بعرض محتويات الملف ونستخدم لهذا الغرض الأمر cat متبوعا بأسم الملف هكذا :

كود:
[ahmed@localhost arabteam]$ cat -n  Main.java
     1
     2  //created by Engineer Shaheen
     3  import javax.swing.*;
     4
     5  /**
     6   *
     7   * @author ahmed
     8   */
     9  public class Main {
    10
    11      /**
    12       * @param args the command line arguments
    13       */
    14      public static void main(String[] args) {
    15        JOptionPane.showMessageDialog(null,"Hello world ! \n Shaheen Soft");
    16        System.exit(0);
    17      }
    18
    19  }
[ahmed@localhost arabteam]$
لاحظ أننى قد ملئت الملف قبل ذلك بهذه البيانات .
استخدمت الخيار n لكى يرقم كل سطر من أسطر الملف .
وللتعديل والإضافة فى الملف استخدم أحد برامج تحرير النصوص text editors
مثل kwrite ,Emacs ,gedit,kate,nedit,................
أو أى برنامج لديك .
ويمكنك استخدام ذلك من خلال سطر اﻷوامر كالأتى :
مثلا أنا استخدم دائما برنامج kwrite ويمكنك أنت استخدام ما شئت . لتعديل الملف السابق عن طريق أحد برامج تحرير النصوص مثل kwrite :

كود:
[ahmed@localhost arabteam]$ kwrite Main.java
[ahmed@localhost arabteam]$
سيظهر لك برنامج kwrite ذو الواجهة الرسومية الجميلة ويمكنك تعديل ما شئت من النص وحفظه أو حفظه فى مكان آخر أو أى شىء يروق لك .
وسأقوم فى الدروس القادمة بإذن الله بتقديم نبذة مختصرة عن أهم محررات النصوص المشهورة فى لينوكس .
استخدمنا قبل ذلك الأمر rmdir لحذف مجلد وماذا إذن لو أردت حذف ملف ؟؟؟

استخدم الأمر rm ويعنى remove ويستخدم هكذا :
كود:
[ahmed@localhost arabteam]$ touch windows
[ahmed@localhost arabteam]$ rm windows
rm: remove regular empty file `windows'? y
[ahmed@localhost arabteam]$
لقد قمت بعمل ملف واسميته windows ثم قمت بمحوه بالأمر rm

لاحظ أيضا أن هذا الأمر يمكن أن يستخدم مع المجلدات ولكنه يقوم بمحو المجلد أو الملف نهائيا دون الرمى فى سلة المهملات التى تسمى Trash ويستخدم مه المجلدات باستخدام الخيار r لحذف كل الملفات والمجلدات التى توجد بداخل المجلد والخيار f للحذف بدون سؤال التأكيد هكذا :

كود:
[ahmed@localhost ahmed]$ rm -rf ali
[ahmed@localhost ahmed]$
الأمر cp :

نستخدم الأمر cp لنسح ملف من مكان الى آخر وربما فى نفس المكان هكذا :

كود:
[ahmed@localhost arabteam]$ cp Main.java Main.cpp
[ahmed@localhost arabteam]$
سيقوم الأمر بنسخ الملف بكل محتوياته وتسمية ملف جديد يحتوى على هذه المحتويات لكن اسمه Main.cpp .
ماذا لو أردت سخ الملف الى مكان آخر غير المجلد الموجود به ؟؟؟
>>>> أكتب المسار كاملا هكذا :

كود:
[ahmed@localhost arabteam]$ cp Main.java /mnt
cp: cannot create regular file `/mnt/Main.java': Permission denied
[ahmed@localhost arabteam]$
ما هذا ؟؟؟

يقول ال Shell أن Permission denied !!!!!
يعنى لم يتم نسخ الملف هل تعرف لماذا ؟؟؟
الإجابة ببساطة تتلخص فى الآتى :
هل سمعت يوما من يقول أن اللينوكس نظام آمن ؟؟
هل سمعت يوما من يقول أن لكل مستخدم من مستخدمى النظام له صلاحية معينة ؟؟
هل سمعت يوما من يقول أن اللينوكس يدعم تعدد المستخدمين ؟؟
هل سمعت يوما أن هناك مستخدم يسمى ال Super User أو Administrator أو الRoot ؟

اذا كانت اجاباتك على بعض هذه الأسئلة بنعم فيمكنك الإستمرار معنا ! وإن لم تكن كذلك فيجب عليك أولا مراجعة حساباتك !!!

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

لذلك وضع لكل مستخدم صلاحيات معينة كهذه الحالة التى نحن بصددها فالShell لم يستطيع نسخ الملف التى تريده الى مجلد mnt/ وذلك بكل بساطة لأنك ليست لديك الصلاحية بأن تكتب على مجلد من مجلدات النظام وهو mnt/ لذلك أعطاك رسالة خطأ .
حسنا ما الحل اذا كنت مضطرا لعمل ذلك ؟؟
نعم يمكنك عمل ذلك ببساطة لكن مع وجود شرط واحد ألا وهو ال password للمستخدم Root وإن لم تكن لديك فلا يمكنك ذلك !
فلنفرض أنك لديك ال password للمستخدم Root ولو أردنا تنفيذ الأمر السابق قم بالآتى :

كود:
[ahmed@localhost arabteam]$ su
Password:
[root@localhost arabteam]#
استخدم أمر su لكى تدخل الى صلاحيات المستخدم الجذر Root وقم بعدها بإدخال ال Password وتلاحظ بعدها تغير علامة الPrompt من $ الى # كما أن المستخدم أصبح Root@localhost وليس ahmed@localhost .

وبذلك تكون لك الصلاحية بعمل أى شىء فى النظام.
نفذ أمر النسخ السابق هكذا :
كود:
[root@localhost arabteam]# cp Main.java /mnt
[root@localhost arabteam]#
لو قمت بالذهاب الى المجلد mnt/ ستجد هناك ملف اسمه Main.java .

( لاحظ أن أمر su يعنى Super User )
ولا حظ أيضا أنه عند تثبيت بعض الحزم أو البرامج لا تتمكن من ذلك ويعطيك رسالة بعدم السماح لك بهذا والمشكلة تكون فى هذه الحالة أنك مستخدم عادى والحل هو بالدخول ك Su من الامر su وادخال ال Password كما شرحنا سابقا .
ننتقل الى نقطة أخرى خاصة بأمر آخر اسمه ln .
أتتذكر أخونا Windows كان فيه حاجة عنده أسمها shortcut أو اختصار وهى عبارة عن وصلة تحتوى على مسار ملف ما . الآن فى اللينوكس أصبح أسمها link ونستخدم الأمر ln لعمل ذلك.
جرب هذا الأمر

كود:
[root@localhost arabteam]# ln Main.cpp /mnt/a.cpp
فى الدرس القادم بإذن الله سنتحدث عن أمر ln
ولكن قبل ذلك أستخدم man الخاص بالأمر ln قبل أن أشرحه فى المرة القادمة التى سنتابع فيها باقى الحديث عن أشهر اﻷوامر المستخدمة فى نظام التشغيل لينوكس .


سبحان الله وبحمده سبحان الله العظيم


الرد باقتباس
  #10  
قديم 2006-03-18, 06:06 PM
 
بارك الله فيك

الرد باقتباس
الرد على الموضوع

مواقع النشر (المفضلة)