نظام التشغيل يونيكس

الطبعة الأولى

تأليف  د. زياد ديب يوسف

written by  

 Ziad  Dib  Yousef  

Ph.D. MBA (Ind.Kfm.  Dipl.Kfm)

حقوق الطبع محفوظة:

رقم الإيداع لدى المكتبة الوطنية في المملكة الأردنية الهاشمية 1112/10/1994 رقم التصنيف: 43، 005

الناشر: دار حنين / عمان - الأردن و مكتبة الفلاح / العين - دولة الامارات العربية المتحدة

 

شكر وتقدير:  أشكر الأستاذ الدكتور محمد مصطفى الحاج حسن (عميد كلية العلوم - جامعة الزيتونة الأردنية) 

والدكتور منيب قطيشات (الجامعة الأردنية - كلية العلوم - قسم الحاسوب) على التشجيع

والمساعَدة ،  وأشكر الأستاذ أحمد ممتاز الملّوحي على مجهوده الكبير في تصحيحه لغةَ الكتاب

 

ملاحظة: مع الأسف لم أقوم في تطوير هذه الطبعة (الأولى) لعدم الجدوى وعدم التشجيع العلمي  

 

 

الفهرس

تمهيد                                                                                 9

تقديم                                                                                  11

الفصل الأول: الدخول إلى النظام                                                      20

 

        1.1    عملية الإدخال                                                         21

        2.1    تسجيل الدخول Login                                                 21

        3.1    إنهاء العمل في يونيكس                                              25

        4.1    المستخدِمون والمجموعات                                            25

        5.1    مدير النظام   root                                                    27

        6.1    كلمة المرور                                                          27

        7.1    المساعدة help                                                        28

 

الفصل الثاني: الملفات والأدلة                                                         32

 

        1.2    عمل ملف جديد و إظهار المحتوى                                    35

        2.2    سرد الملفات                                                           36

        3.2    الأدلة                                                                  38

                1.3.2 جذرالأدلة ، تشعب الأدلة                                      39

                2.3.2 أدلة العمل                                                     40

                3.3.2 التنقل بين الأدلة                                               40

                4.3.2 الأدلة الرئيسة والمنسوبة                                     41

                5.3.2 عمل دليل جديد                                               42

                6.3.2 إضافات  لجدولة الملفات والأدلة                              43

                7.3.2 نظام الملفات                                                  43

        4.2    الأدلة التقليدية لدى يونيكس                                           44

                1.4.2 الدليل الجذر root-directory                                   45

                2.4.2 دليل البرامج /bin                                             45

                3.4.2 دليل ملفات التعليمات /etc                                     45

                4.4.2 الدليل المؤقَّت /tmp                                           46

                5.4.2 دليل المستخدِمين                                             46

                6.4.2 دليل الأجهزة  /dev                                           47

        5.2    حقوق الاستعمال والحماية                                            47

                1.5.2 جدولة الحقوق                                                47

                2.5.2 أحرف إضافية للحظر والحماية                        49

                3.5.2 تغيير و إلغاء الحقوق                                         50

        6.2    تغيير الملكية و التاريخ                                        53

                1.6.2 تغيير الملكية                                                 53

                2.6.2 تغيير تاريخ الملكية                                            54

        7.2    إظهار محتويات الملفات                                               55

                1.7.2 الإظهار الكلي لمحتويات الملفات                               55

                2.7.2 الإظهار التدريجي                                             56

                3.7.2 إظهار بداية ونهاية الملف                                     59

                4.7.2 الإظهار البينري binary-coded                                61

                5.7.2 إظهار نوعية الملف                                           65

        8.2    إدارة وتنظيم الملفات                                                  66

                1.8.2 تغيير الاسم                                                   66

                2.8.2 طبع و نسخ الملفات                                           67

                3.8.2 الإشارة لارتباط الملفات                                        67

                4.8.2 إزالة وحذف الملفات                                          69

                5.8.2 إزالة وحذف الأدلة                                            70

                6.8.2 البحث عن الملفات                                             71

        9.2    ملفات الأجهزة والوحدات                                             74

 

الفصل الثالث: المطاريف                                                              76

 

        1.3    القياسات والمواصفات للمطاريف                                      78

        2.3    إدخال المواصفات                                                     79

        3.3    قياسات التوصيل                                                      80

                1.3.3 تصفية الإدخال والانقطاع                                      81

                2.3.3 تصفية الإخراج                                                82

                3.3.3 تفسير وتأويل أحرف القيادة                                  

82

                4.3.3 احتمالات أخرى                                               84

                5.3.3 فهرس المواصفات                                            84

        4.3    ملفات رموز القيادة للمطاريف                                 86

 

الفصل الرابع: الأغلفة                                                                 87

 

        1.4    الأغلفة التقليدية في يونيكس                                          89

        2.4    العمل بالغلاف                                                         89

        3.4    تغيير غلاف الدخول                                                   90

        4.4    تحويلات ورموز الغلاف                                               91

                1.4.4 بدائل الأحرف                                                

91

                2.4.4 توجيه خروج المعلومات                                      92

                3.4.4 توجيه إدخال المعلومات                                       94

                4.4.4 تعدد الأوامر في سطر واحد Pipe                             95

                5.4.4 رموز الإدراج                                                 97

        5.4    قدرات إضافية لغلاف سي                                             98

        6.4  بدائل النظام والأغلفة                                                    101

                1.6.4 بدائل غلاف بورني                                            102

                2.6.4 بدائل غلاف سي                                              103

        7.4    برامج الأغلفة الخاصة shell-scripts                                   105

 

الفصل الخامس: عمليات نظام التشغيل                                        114

 

        1.5    النواة                                                                

115

        2.5    العمليات                                                              

116

        3.5    العمليات المساعدة                                                   

117

        4.5    حقوق العمليات                                                       119

        5.5    مراقبة العمليات                                                      

120

        6.5    حذف وإيقاف العمليات                                         127

        7.5    المعالجة الخلفية للعمليات                                             

129

        8.5    صلاحيات ومرتبات العمليات                                           132

        9.5    تحديد أوقات عمل العمليات الزمنية                                    133

 

الفصل السادس: محررالنصوص                                                      136

 

        1.6    البرنامج الكتابي vi                                                    138

        2.6    عملية إدخال المعلومات والأوامر                                      139

 

الفصل السابع: الطباعة                                                       145

 

        1.7    الطباعة بواسطة System V                                           147

        2.7    الطباعة بواسطة BSD-Unix                                          150

 

الفصل الثامن: أوامر النظام المتطورة                                                 151

 

        1.8    أوامر المقارنة                                                         152

        2.8    تجزئة الملفات                                                 155

        3.8    تصنيف الملفات                                                       157

        4.8    اقتطاع المعلومات                                                     161

        5.8    تبديل الأحرف داخل الملف                                            162

        6.8    تركيب الأوامر                                                         165

        7.8    البحث عن معلومات معينة                                            167

        8.8    ملفات الأرشيف                                               168

        9.8    تكثيف الملفات                                                 171

        10.8  برامج أخرى مساعدة                                                172

 

 

الفصل التاسع: البريد الإلكتروني                                                      175

 

        1.9    الاتصال المباشر                                                      176

        2.9    البريد الإلكتروني electronic mail                                     180

 

الفصل العاشر: شبكات الاتصال                                                       191

 

        1.10  معلومات عامة                                                       193

        2.10  مكونات الارتباط الإلكتروني ISO/OSI                                195

        3.10  مقدمة العنوان الإلكتروني Network Protocol                        196

        4.10  العنوان الإلكتروني                                                   197

        5.10  برامج الاتصال الإلكتروني                                            199

        6.10  برامج أخرى للاتصال البعيد                                          210

        7.10  برامج متطورة للعمل من خلال الشبكات                              212

        8.10  الشبكة العالمية إنترنت Internet                                     217

 

الفصل الحادي عشر:  النوافذ                                                         223

 

المراجع                                                                              228

فهرس الأوامر                                                                        230

 

 

تمهيد

 

      منذ زمن بعيد لم يُغَيِّر مجالات العمل و الحياة الاجتماعية أيُّ اختراع تقني هذا التغيير

الصارخ مثلما غيرها اختراع الكمبيوتر ، الذي أصبح الان لا غنى عنه في مجالات الصناعة 

والتجارة والتعليم والخدمات... إلخ. وقد قامت مؤسسة مسجيوست للتكنلوجيا  Massachusetts

Institute of Technology في الولايات المتحدة بدراسة أظهرت أنه في عام -2000- سيصبح من

يزيدون عن 64 بالمئة ، من العاملين في جميع حقول العمل ، بحاجة إلى الإلمام في العمل على

الحاسوب، ولذا ينبغي أن نستعد لتكون لدينا القدرة على التكيّف مع المستقبل ، ولنحصّـل

المعرفة الكافية والضرورية للعمل في هذا المجال .

 

      ومعرفة العاملين في الإدارة والتصنيع والخدمات في وقتنا الحاضر لا زالت محدودة في

مجال الحاسوب ، وتعليم هؤلاء العاملين وتدريبهم لن يكون بالسهولة المتوقعة، والإشاعة

القائلة إنه بالمستطاع شراء الجهاز والعمل به مباشرة بعد إخراجه من صندوقه  مجرد دعاية

ليس إلاّ، وهذا ينطبق أيضاً على البرامج الجاهزة (STANDARD SOFTWARWE ) التي يكون بعض منها

سهلَ الاستخدام ولكنه عظيم الفعالية ، ويحتوي على إمكانات وقدرات تفوق معرفة مستعمليها،

ومستخدِم هذه البرامج يجب أن تكون لديه المعرفة الكافية للتصحيح ، أو أن يطلب المعونة من

اختصاصي في هذا المجال .

 

      إن المعرفة والتدريب المتواصل على الكمبيوتر يجعل العمل فعالاً ومجدياً. لذلك ، 

وبعد الدراسة الطويلة لموضوع تحضير كتاب يوضح التساؤُلات المتعلقة في نظام التشغيل يونيكس ،

آثرت عدم ترجمة أي كتاب بهذا الصدد ، بل شرعت بكتابة موضوع جديد باللغة العربية ¡ أُبين به

قدر المستطاع كيفيةَ العمل بواسطة نظام التشغيل (يونيكس) ، والشرحَ عن قدراته وإمكاناته

العالية ، وقد حرصت على عدم نشر كتاب تقليدي مثل كتب أنظمة التشغيل المترجمة ذات الطابع

الأجنبي ، ولكنني سأستخدم المصطلحات والأوامر باللغة الإنكليزية لتسهيل العمل . وهذا الكتاب

يقدم شرحاً عاماً عن النظام ، ويستفيد منه المهتمون في علوم الحاسوب وأنظمة التشغيل ،

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

تقديم

 

      قبل حوالي 20 عاماً ظهر نظام التشغيل يونيكس كجزء من أحد برامج التجارب إلى حيز

الوجود ، ومنذ ذلك الحين وهو قيد التطوير ، حتى وصل إلى مرتبة عليا ، وأصبح نظاماً معتمداً

لمعظم الحواسب الواردة ، كالحاسوب الشخصي ، والحواسب الفائقة والوسطى ، لكونه عظيمَ القدرة

ومرنَ الأداء .

 

      وقد صُمم هذا النظام من البداية على شكل نظام منفتح قليل الحواجز، لا يوجد به تحديد

لإدارة وحدة تخزين المعلومات ، أو وحدة الذاكرة RAM ، كما هو الحال في  نظام MS-DOS

والمحدودة بسعة K 640  ،  لذلك بقي يونيكس  ناجحاً في السوق الكمبيوترية خلال الأعوام

العشرين الماضية .

 

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

التصنيع والتقنية ، لأنه كتب بلغة ( C ) بدلاً من اللغة الآلية ( أسمبلي ) ، وتظهر ميزات

يونيكس في معالجة المهام المتعددة   (Multitasking) ، وفي نظامِ تعدد العاملين 

(Multiuser) جلياً ، إذ يُمكِّنُ  عدداً كبيراً من المستخدِمين من العمل في آن واحد وِبمهامَّ كثيرة

، على حاسوب واحد بواسطة المطاريف (Terminals) متنوعة القدرات .

 

      وبمقدور "يونيكس" أن يسيطر على المهام ويقودها، وهو يقسم وقت وحدة العمليات

والمعالجة ووحدة التحكم ، بأن يعطي لكل عملية وقتاً خاصاً حسب أهميتها، ويراقبَ في الوقت

نفسه عمليات ما خلف الستار ، والعمليات الحالية، ويعطيَ لكل مستخدِم أولويته . ولقد عززت

شعبيةَ يونيكس البرامجُ المساعدةُ العديدةُ المرفقةُ به ، مثل مترجم "سي" ، وبرامج تنظيم

الملفات ، والاتصالات ، والطباعة ، والرسوم ، والتخطيط ...الخ. 

 

      منذ عدة أعوام كانت وحدات العمل للحاسوب (Workstations) تعمل بشاشات خضراء ذات

قدرات محدودة ، ولا تعرف فن الرسم على الشاشة ، ولاتعدد الألوان ، أما الآن فقد أُنتجت وحدات

الشاشة الكبيرة القابلة للرسم والعمل بالنوافذ ، إذ يمكن بواسطتها تشغيل عدة برامج ، كل

برنامج في نافذة ، ننتقل مابينها بواسطة الفأر (_SYMBOL 56 \f "Wingdings"_ Mouse) ،

الموصول في محطة العمل ، ويعمل كل برنامج على حدة ، ولا يتوقف إلا إذا كان ذلك مقصوداً .

وإذما رُبطت عدة أجهزة يونيكس ، بعضِها ببعضٍ ، ليكون أمامنا انفتاح كثير من الإمكانات ، مثل

توزيع المعلومات الضخمة في عدة وحدات على أُسطوانة مشتركة ، أو الطباعة المشتركة ...إلخ.

 

      ولنظام يونيكس اليوم عدد كبير من البرامج الجاهزة المطروحة في الأسواق،مثل برامج

الإدارة ، والمحاسبة ، والكتابة ، والرسم ، والهندسة ...إلخ. والسلبية الوحيدة لنظام

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

كثيرة. وهذا الكتاب يهتم بصورة مباشرة  ببرامج يونيكس المساعدة ، التي  يكون العمل

بواسطتها ذا جدوى مفيدةٍ للمستخدِم.

 

      اُنتج نظام يونيكس في أواخر الستينات أول مرة في الولايات المتحدة الأمريكية ، لدى

شركة BELL (AT&T)  للاتصالات ، من خلال فكرة عمل نظام يسمى (MULTICS) ،  صمم بالاشتراك مع

شركة (GENERALELECTRIC) . ولقد حقق المبرمج (كن طمسون)  - أول مرة  - برمجةَ نظام الأغلفة ،

ونظامَ إدارة العمليات، ليعملا على جهاز ( DEC PDP-7  ) ، بهدف وضع حجر الأساس لأحد الأنظمة

التجريبية.

 

      وفي عام 1971 نُقل هذا النظام إلى جهاز (PDP-11)  ¡ الذي اُنتج  بواسطته برنامج

معالجة الكلمات - أول مرة - ليعمل بواسطة يونيكس. ومن الأمور التي ساعدت على نجاح يونيكس

أنه كُتب بلغة C في عام 1973 ، حيث وُزعت بعد ذلك عدة نسخ مصدرية (SOURCE-CODE) من هذا

النظام على بعض الجامعات الأمريكية ، التي  ساعدت بدورها على تطوير يونيكس. ومما يجدر ذكره

أن يونيكس استعمل تجاريا بعد عام 1982 ، وكان ذلك هو نظام ( UNIX  SYSTEM III ) ¡ وفي عام

1983  تم تطويره إلى نظام  ( UNIX  SYSTEM  V )   الذي لاقى انتشاراً واسعاً منذ ذلك الحين.

 

      هذا وكانت جامعة كاليفورنيا قد طورت نظام يونيكس وأسمته (BSD-UNIX) ¡ لاستخدامه في

الأغراض العلمية في الجامعات والمؤسسات الباحثة. هذا  ويوجد الآن  نظام  ( SYSTEM V.R4 )

الذي دمج النظامين السابقين في نظام متطور.

 

      ومصطلح ( UNIX )  اسم مسجل لشركةِ( AT&T )   الأمريكية ، التي كانت تسمى ( BELL

سابقاً، ويوجد  أنواع أخرى من نظام يونيكس لمجال الحاسوب الشخصي ، مثل ( CoherentوMinix )

الموجودة فيِ (Atari وAmiga ) وغيرها، ومثل Univel ) و XENIX و ( SCO التي تعمل بواسطة

أجهزة ( PC's ).

 

      وفي أيامنا هذه أنتجت شركة  ( MICRO-SOFT )الأمريكية نظام (WINDOWS NT) (NT=New

Technology) ، الذي يشبه  ( يونيكس ) من حيث القدرة ، ويشبهُ نظام ( MS-Windows  V. 3.1

 من حيث الشكل، وهو يحتوي على قدرات الاثنين معاً. وأنتجت  الشركتان (AT&T  و  Novel) نظام

( Univel )  وهو نظام يونيكس مطوَّر ، وله قدرات عالية في مجال الشبكات ( Networking )  .

وهذه الأنظمة ظهرت في عام 1993 - أول مرة - إلى حيز الوجود.

 

      وإليك - فيما يلي - مجموعةَ الأنظمة التي تم تطويرها من قبل الجامعات ومنتجي

الحواسب :

 

        اسم النظام                     الجهة المنتجة

        System VR4.2                        AT&T

                                                Novell

        AIX                                   IBM

        HP UX                                HP

        IRIX                          Silecon Graphics

        SCO  Open Desctop ODT          Santa Cruz Operation

        SunOs                                Sun Microsystems

        Solaris                                SunSoft

        Ultrix                         DEC Digital Equipment Corporation

        XENIX                               MicroSoft

        SINIX                                Siemens

        OSF/1                                 Carnegie Mellon

University

        BSD Unix                     Berkeley University

 

        هناك عديد من الأجهزة مختلفة التصنيع ذات الوظائف المتعددة ، مثل وحدات التخزين

المختلفة (الأشرطة والأُسطوانات الضوئية والمغناطيسية وغيرها). وأهم وحدة في جهاز الحاسوب هي

الوحدة المركزية CPU  (Central Proccessing Unit)  ، التي تتكون من وحدتين اثنتين هما: 

وحدة الذاكرة  (Memory) ، ووحدة العمليات والمعالجة (proccessor)  التي تقوم بالعمليات

الحسابية ، وتتحكم في الأجهزة والوحدات المرتبطة في الحاسوب ، وتُنجز الأوامر الصادرة عن

الأغلفة والبرامج  .

 

هناك نوعان من الوحدات المركزية المتداولة:

 

                -      CICS (Complex Instruction Set)

                -      RISC ( Reduced Instruction Set Code

 

        وحدة (CISC) لديها إيعازات آلية أكثر عدداً من وحدة (RISC) ¡ ولذلك تكون أبطأ في

الإنجاز ، والبرامج التي تُكتب لتعمل من خلال وحدة (RISC) يكون لديها إيعازات وأوامر أكثر

لتغطية نقص الإيعازات الآلية فيها، ولكنّ هذه البرامج تظل سريعة الإنجاز لأن وحدة العمليات

والمعالجة لاتحتاج إلى إيعازات آلية كثيرة لإنجاز واجبات البرامج ، وإنتاجُ وحدات (RISC)

صناعياً أسهل وأسرع.

 

        إن وحدة (CISC) هي من إنتاج شركة (INTEL)  (المشهورة ب 8086 إلى 80486  و

Pentium) وشركة Motorola ( المشهورة ب  68XXX  ) .

 

         أما وحدات (RISC) فهي من إنتاج شركات   DEC (Alpha-Chip) و MIPS (R4000-R4400) و

QED (Orion-Chip) و SUN وSPARC  وغيرها.

 

        وحدة الذاكرة:

 

        في وحدة الذاكرة تتواجدالإيعازات الضرورية لوحدة العمليات والمعالجة والتحكم،

وكذلك المعلومات التي تكون بحاجة لها، وهناك أيضا قسم خاص في وحدة الذاكرة محجوز لنظام

التشغيل.

 

وحجم وحدات الذاكرة ووحدات التخزين الأخرى تُقاس بكمية ال (Byte) :

 

KB (Kilo-Byte) ¡   MB (Mega-Byte) ¡   GB (Giga-Byte)

Byte=8Bit       KB=1024Bytes   MB=1024KB   GB=1024MB

 

وال Byte  يحتوي على 8 Bit¡ ووحدة Bit لها حالتان 1 أو 0 ،  والByte  الواحد يستطيع أن

يستوعب عدداً ما (من 0 إلى 255) ، أي 256 حالة . وحجم الذاكرة (RAM  ) في الأجهزة التي تعمل

بنظام يونيكس تتراوح عادةً ما بين 8 إلى 64  MB  ، وذلك حسب الحاجة والمقصد.

 

         الوحدات الأخرى:

         توجد وحدات (أجهزة) إضافية بجانب الوحدة المركزية مثـل :

 

        وحدات التخزين الثابتة (Hard-Disk) البالغة سعتها عدة GB=GigaByte  والتي يُخزن

بها نظام التشغيل ، وبرامجه العديدة ، والمعلومات والبرامج الخاصة Software & Data

لمستخدِمي الجهاز والتي تتواجد في وحدة الذاكرة بعد الانتهاء من العمل،لأن هذه المعلومات

تضيع لدى إطفاء الجهاز ولذلك يجب تخزينها .  ويمكن استعمال وحدات التخزين الثابتة كوحدات

ذاكرة إضافية إذا استدعت حاجة أحد البرامج إلى ذاكرة أكثر مما هو موجود في ( RAM ) ،

ويعمل هذا البرنامج بطريقة أبطأ من البرامج التي تعمل في الذاكرة الحقيقية ، لأن القراءة

والكتابة في هذه الحالة تكون ميكانيكية وليست الكترونية .

 

        ووحدات التخزين المتنقل هي أقراص(_SYMBOL 60 \f "Wingdings"_ _SYMBOL 61 \f

"Wingdings"_ floppy-disk) ¡ وأشرطة (tape)¡ و أقراص ضوئية ( laser-disk) ¡ بلاستيكية ،

كضمان في حالة التلف أو العطل.

        وأجهزة الإخراج كالطابعة والراسم .

 

        وأجهزة الاتصال (_SYMBOL 57 \f "Wingdings"_ modem ) هي لربط جهاز الحاسوب بأجهزة

أخرى مماثلة أو مطاريف عمل بعيدة لتبادل المعلومات .

 

ومطاريف العمل _SYMBOL 58 \f "Wingdings"_ Terminals ( تحتوي على الشاشة ومفاتيح الإدخال)

¡

 

        ومطاريف الإدخال هي التي تمكّن الإنسان من القيام بالاتصال بالحاسوب والعمل والتفاهم

معه. وهناك عدة احتمالات لوصل هذه المطاريف بالحاسوب، والاحتمال الرئيسي هو أن يكون المطراف

موصولاً بصورة مباشرة مع الجهاز من خلال الخط التسلسلي (  serial  port) ، أما إذا كان

المطراف بعيداً عن جهاز الحاسوب فيمكننا ربطه بواسطة خط الهاتف  من خلال ال ( modem ) أو من

خلال الشبكات ( NETWORK) .

 

        إن جهاز يونيكس يحتاج بالطبع إلى المطراف الرئيسي (_SYMBOL 58 \f "Wingdings"_ 

Console)¡ والذي يمكن من خلاله التحكم في النظام ، ومطاريفِه العديدة ، والأجهزةِ المرتبطة ،

وشبكةِ الاتصالات ، وغيرها... ولقد كانت المطاريف تقتصر في إظهار وإدخال المعلومات على

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

وغيرها... وهذه المطاريف يجب ربطها بواسطة الشبكة الإلكترونية أو الوصل المباشر ، لأن كميات

المعلومات التي تُنقل إليها كبيرة جداً، وخطوط الهاتف -حالياً- لا تستطيع نقل هذه الكميات

بالسرعة المطلوبة.

 

_

 

بعض الأجهزة التي يمكن ربطها بالنظام UNIX

 

        نلاحظ هنا الفاكس ، والفأر ، وال PC ¡ والطابعات ، وأسطوانة التخزين ، والمطراف.

 

        استخدام الرموز والمصطلحات:

 

        قمت بكتابة أسماء الملفات والأدلة والأوامر ومفاتيح العمل وغيرِها بشكلها المتداول 

مثل ( group/etc Return Directory ) إلخ... ولم أقم بترجمتها حرفياً ، أما الرموز على

مفاتيح العمل فتجدها كما هي مطبوعة في مكانها، مثل  (Return _SYMBOL 191 \f "Symbol"_ و

Control(Ctrl) Delete(Del) أوF1 F2 ...... F12   أو ScrollLock) . ومن الجدير بالذكر أن

مفتاح (Shift_SYMBOL 241 \f "Wingdings"_) يستخدم لكتابة الأحرف الكبيرة ، وأن مفتاح

(Ctrl) يستخدم لإدخال رموز الأوامر مثل ( Ctrl -C ) ¡ أي أنه يُضغط مفتاح (Ctrl) ويبقى

مضغوطاً و يُضغط مفتاح حرف (C) ثم تترك معاً ، وهذا يوقف عمل برنامج ما. ويستعمل مفتاح

الهروب (Esc) للخروج من البرامج تدريجياً ، وأسماء الملفات المقصودة وضعت لها البدائل (

filename أو file ) ، أما إضافات الأوامر فيتم إدخالها بعد علامة الطرح (مثل -a).

 

_

لوحة مفاتيح الإدخال

الفصل الأول

 

الدخول إلى النظام

 

        1.1    عملية الإدخال                

        2.1    تسجيل الدخول Login                

        3.1    انتهاء العمل في يونيكس             

        4.1    المستخدِمون والمجموعات           

        5.1    مدير النظام   root            

        6.1    كلمة المرور                          

        7.1    المساعَدة help                       

الفصل الأول

الدخول إلى النظام

 

1.1. عملية الإدخال

 

        يتم إدخال المعلومات والأوامر غالباً بواسطة لوحة المفاتيح المتصلة بالمطراف، كما

يتم بواسطتها إدخال الأحرف الأبجدية (Z-A) ¡ والأرقامِ ، والرموزِ الأخرى ، مثل /!.$.&()

وغيرها. وتتشابه لوحة المفاتيح في الغالب مع مفاتيح الآلة الكاتبة المعتادة ، إضافةً إلى

مفاتيح الإدخال الأخرى مثل  (Return أو Enter) ، وهذا المفتاح يحتوي على السهم المعوج

_SYMBOL 191 \f "Symbol"_ المتجه إلى اليسار، وهو ينهي كل سطر من إدخال الأوامر والإيعازات

المعطاة والأسطر الكتابية، ويرسلها لوحدة العمليات والمعالجة في الحاسوب . أما مفتاح

(BackSpace) وهو سهم متجه إلى اليسار  _SYMBOL 231 \f "Wingdings"_ فيحذف الأحرف المصفوفة

باتجاهه ، ومفتاح (  Del  أو Delete ) يحذف من اليمين. وتوجد أيضا مفاتيح ( F1إلىF12 ) ،

وهي مفاتيح يمكن برمجتها للقيام بوظائف تكرارية في البرامج الخاصة.

 

وفي قسم المطاريف من هذا الكتاب يمكننا معرفة كيفية تغيير وظائف المفاتيح.

 

2.1 تسجيل الدخول Login 

 

        عند الدخول إلى نظام يونيكس عن طريق المطاريف يطلب النظام تسجيل الداخل إليه،

ويظهر الوامض مع كلمة Login:  كمحث للتسجيل. وفي هذه الحالة يجب إدخال اسم المستخدِم الذي

يريد الدخول، وأن يكون مُسجلاً لدى النظام، ويكونَ ممنوحاً حق الدخول. وبعد ذلك يطلب النظام

إدخال كلمة المرور الخاصة بالمستخدِم التي تُخَزن مرموزة ، وذلك كي لا يستطيع أحد غير مخول أن

يحل رموزها السرية. والأحرف لاتظهر على الشاشة أثناء إدخالها ، حفاظاً على سرية كلمة المرور

(الشكل 1).

 

 

 

_

الشكل 1

 

        وننهي كل إدخال بمفتاح Return  أو Enter. ويجب لدى إدخال هذه المعلومات أن ننتبه

لكتابة الأحرف الكبيرة والأحرف الصغيرة أثناء الإدخال، لأن يونيكس يفرق ما بينها، وذلك خلافا

لنظام MS-DOS الذي لا يفرق بين هذه الأحرف. وفي حالة حصول خطأ في إدخال المعلومات الصحيحة،

فإن النظام يُعلمنا بذلك تلقائياً ويظهر Login incorrect..  أو  Invalid  Login  على

الشاشة، وتظهر بعد ذلك عبارة Login: ثانيةً ، لكي تعاد عمليةالإدخال مرة أخرى. وبعد إدخال

المعلومات الصحيحة (الاسم وكلمة المرور) تظهر على الشاشة علامة الدولار  $ (علامة الغلاف) مع

إشارة الوامض الذي يظهر ويختفي كل الوقت ، بشكل وامض أو غماز كما هو مبين في الشكل

المرفق:

 

_

الشكل 2

 

        بعد ظهور علامة $ مع الوامض، يكون النظام يونيكس الآن مستعداَ لاستقبال الأوامر. وهذه

العلامة $ هي علامة الغلاف  Shell الذي يشكل بحد ذاته واحداً من برامج يونيكس ، ووظيفة هذا

البرنامج هي ترجمة الأوامر الخطية المكونة من أحرف إلى إيعازات آلية ، تُوَجَّه إلى وحدة

التحكم التي تقوم بتشغيل البرامج الضرورية للقيام بالوظائف المختلفة والمقصودة، وهذه

العلامة $ تكون قابلة للتغيير. ولايستطيع المستخدِم أن يقوم بتشغيل أي برنامج في هذا النظام

دون استخدام الأغلفة Shells  . وبعد قيام الأغلفة بأداء عملها بنجاح يظهر المحث _$ مع

الوامض ثانية لاستقبال أوامر أخرى. وفي بعض الأحيان يكون شكل المحث هكذا % أو # أو بأي شكل

آخر، وهذا يعني في بعض الحالات أن هذا النظام يستعمل غلافاً غير نموذجي ، أو أن المحث قد تم

تغييره من قبل مدير النظام. وفي هذا الكتاب نستعمل غالباً المحث _$ الذي نوضح في جزء

الأغلفة منه كيفية تغيير شكله.

 

$ date                برنامج إظهارالتاريخ  date

 Wed Feb. 19  10:46:15  1993

$_

 

        باستعمال الأمر (date) يظهر في المثال أعلاه، اليوم والشهر والساعة والدقيقة

والثانية والعام.

 

        وبرنامج bc   يحسب لك الأرقام كالآلة الحاسبة  (وننهي كل سطر ب Return   ) كما هو

في المثال التالي:

 

$ bc

128+54

182

24^4

331776

quitt

$_

وينتهي العمل في هذا البرنامج بإدخال  Quit

 

        وإذا أردت أن تحسب مع استخدام الفاصل التعدادي فيجب أن تدخل الإضافة-lmath    بعد

الأمر bc :

 

$ bc -lmath

2.2-1.1

1.1

Quit

$_

 

        ويمكن استخدام جميع العمليات الرياضية (مثل سينوسS() Sinus  ) ولاتنسَ أن تضع مفتاح

الفراغ ما بين الأمر والإضافات .

3.1    انتهاء العمل في يونيكس

 

        عند الانتهاء من العمل في يونيكس يجب تسجيل الخروج ( logout أو exit ) قبل مغادرة

الجهاز، وعند ذلك يظهر محث (login) للدخول مرة أخرى من قبل شخص آخر إلى النظام. وفي حالة

عدم الخروج من النظام يكون من المتوقع أن يعبث أحد الموجودين في مكان المطراف في معلوماتك

الخاصة، دون أن يُدخل نفسه إلى النظام بطريقة مشروعة. وإذا عَزَلت الطاقة عن مطرافك ولم تُخرِج

نفسك بالطريقة المذكورة، فإنّ أيَّ إنسان يستطيع أن يشغِّل المطراف ثانية، ويكون من المستطاع

العمل كما كان ذلك قبل إطفائه وبصلاحياتك . ولا تطفىء جهاز اليونيكس الرئيسيَّ (server) أثناء

تواجد أشخاص آخرين يعملون عليه في مكان آخر، لأنه يمكن أن يسبب ذلك إيقاع خسارة لمعلوماتهم

لم يتم تخزينها بعد. وقبل إطفائه يجب تخزين محتويات وحدة التخزين (RAM) في وحدات التخزين

(hard-disks) _SYMBOL 59 \f "Wingdings"_.

 

4.1 المستخدِمون والمجموعات

 

        إن كل مستخدِم في نظام يونيكس - كما ذكرنا سابقاً - له اسم خاص وكلمة مرور خاصة،

يستطيع النظام بواسطتها أن يحميَ معلومات المستخدِم الخاصة من العبث واستعمال غير المخول.

واسمُ المستخدِم يكون أيضاً العنوانَ المعتمدَ للبريد الإلكتروني التابع للنظام. ونظامُ يونيكس

يستعمل داخلياً رقم المستخدِم فقط وليس اسمَه ، وهذا الرقم يُعطى تلقائياً من قِبَلِ النظام في

حالة تسجيل مستخدِم جديد. وإذا أردنا معرفة أسماء العاملين على النظام في الوقت الحاضر،

نُدخل الأمر  whoونضغطReturn  .

 

 

$ who

Ziad          ttyp0          Feb          6    09:41

mazen      ttyp1          Feb          6    11:15

Ahmad     ttyp2          Feb          6     12:00

nabilah     ttyp3          Feb          6     13:01

root          console     Feb           6     10:10

$

الشكل 3

 

        كما ترى أعلاه، يعمل هؤلاء المستخدِمون حاليا ًفي النظام من اليسار إلى اليمين، وتظهر

جلياً الأسماء والمطاريف والتاريخ والوقت.

 

        والأمر who am  i يعطيك اسمَ الذي يعمل على هذا المطراف :

 

$ who am i

ziad          ttyp0         Feb      6      9:41

 

        ويستطيع مدير النظام (superuser) أن يستعمل سجل المجموعات لإعطاء الصلاحيات

والحقوق، أي أن يسجل الأشخاص في مجموعات مختلفة، لكي يعطيَ لكل مجموعة حقوقاً وصلاحيات خاصة

بها. فلو وجد على سبيل المثال ثلاثة عاملين في قسم المحاسبة ، فإنه يحق لهم استخدام

معلومات معينة، مثل معلومات الميزانية أو الأجور، ويمكن جمعهم في مجموعة واحدة لها حقوق

معينة.

5.1  مدير النظام   root

 

        يوجد لنظام يونيكس في العادة مدير يتمتع بالحقوق الممنوحة له جميعاً  يسمى (root)

، ورقمه التسلسلي صفر ، وهذا المدير يحق له أن يسجل ويحذِف المستخدِمين والمطاريف والاجهزة ،

ويحذِف الملفاتِ والبرامجَ ، وينهيَ العمليات ...إلخ

 

6.1  كلمة المرور

 

        كلمة المرور هي "مفتاح الخزنة" ، وعندما تكون معروفةً من قبل المستخدِم يكون من

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

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

وأرقام ورموز يتعين خلطها كبيرةً وصغيرةً ، ولا تضع أسماء معروفة أو كلمات من القاموس أو أي

مرجع معروف ، واستعمل الرموز مثل  !@#^&*)(.. وكما تلاحظ (الشكل 4 تالياً) ، فإنه يمكن

تغيير كلمة المرور في أي وقت باستعمال أمرpasswd .

 

$ passwd

Changing password for ziad

Old password:

New password:

Re-enter new password:

$

الشكل 4

 

        إن برنامج passwd   يطلب أولاً كلمة المرور الحالية old password، ثم الكلمةَ

الجديدةnew passwod  ، ويعاد كتابتها للتأكد  Re-enter password  ، وبعد ذلك تكون الكلمة

الجديدة هي المعتمدة في حالة دخولٍ  جديدٍ إلى النظام .

 

7.1  المساعدة help

 

        إنَّ أحد برامج يونيكس المسمى (help) يُستعمل كمرجع ومساعد، وهو يعطيك معلومات عن

الأوامر والإيعازات الموجودة في النظام إلى جانب إضافاتها¡

 

        وإليك حالاتِ الإدخال كما هي في الشكل التالي:

 

صورة عامة عن الأوامر في نظام (AIX)

$ help

 

Look in a printed manual for general help if you can. To get started.

refer to Using the AIX Oerating System manual.

 

 

The commands:

        man -k keyword     

lists commands relevant to a keyword

        man command                prints out the manual pages for a command

are helpful; other basic commands are:

        cat            - concatenates files (and just print them out)

        ex             - text editor

        finger         - user information lookup program

        ls              - lists contents of a directory

        mail           - send and receive mail

        passwd        - change login password

        sccshelp      - view information on the Source Code Control System

        tset            - set terminal modes

        who           - who is on the system

        write          - write to another user

 

you could find programs about mail by the command:   man -k mail

And print out the man command documentation via:      man mail

you can log out by typing control -d (if your prompt is $)

or by typing logout (if your prompt is %)

 

        هذه المعلومات المدونة أعلاه تعطي صورة عامة عن الأوامر كما هو مبين ، وإذا أردنا

الحصول على مزيد من المعلومات نستعمل الأمر man بكتابة اسم الأمر الذي نريد الاستفسار عنه 

كإضافة:

 

$ man who

 

        وفي الجدول التالي ترى بياناً تفصيلياً عن الأمر who في (SunOs):

 

 

WHO(1)                                     USER COMMANDS                       WHO(1)

 

NAME

        who - who is logged in on the system

 

SYNOPSIS

        who [  who-file] [ am i ]

 

DESCRIPTION

        Used without arguments¡ when who lists the login name¡ terminal

        name¡ and login time for each current user. who gets this

        information from the   /etc/utmp  file.

        If a filename argument is given¡ the named file is examined

        instead   of   /etc/utmp.  Typicaly  the named   file   is

        /var/adm/wtmp¡ which contains a record of all logins since

        it was created. In this case. who lists logins¡ logouts¡

        and crashes. Each login is listed with username¡ terminal

        name (with   /dev/ Supperessed)¡ and date and time. Logouts

        produce a similar line without a user name. Report produce

        a line with '~' in place of the device name¡ and a fossil

        time indicating when the system went down. Finally¡ the

        adjacent pair of entiers '|'  and '}' indicate  the system-

        maintained time just before and after a date command changed

        the system's idea of the time.

        Whit two arguments¡ as in ' who i am ' (and also 'who is

        who')¡ who tells who you are logged in as : it displays your

        hostname¡ login name¡ terminal name¡ and login time.

 

EXAMPLES

                example % who am i

                example ziad   tty0     Mar 23 12:30

                example %

                example % who

                samir         Mar     24 11:20

                munir         Mar     24 12:03

                example %

 

FILES

                \etc\utmp

                \var\adm\wtmp

 

SEE ALSO

                login(1). w(1). whoami(1). utmp(5V). locale(5)

                Sun Release 4.1   Last change: 20 April  1990

 

        يتبين - هنا - اسمُ الأمر وشرحٌ قصير بعد (Name) ¡ وكيفيةُ إدخال الأمر مع إضافاته بعد

( SYNOPSISاوSYNTAX ) ¡ ونجد الإضافاتِ جميعاً بعد (DESCRIPTION)، والأمثلةَ بعد (EXAMPLES) ،

والملفات الضروريةَ لهذا الأمر بعد (FILES) ، والأوامرَ المماثلةَ ، والواجباتِ بعد (SEE ALSO).

 

        نلاحظ من خلال عرضنا الذي سبق للأمر who ¡ وبعد تقديم شرح مختصر لهذا البيان ، 

كيفيةَ إدخال الأمر مع إضافاته، والأمثال والملفات الضرورية لهذا الأمر، والأوامر المماثلة،

ونستطيع على ضوء ذلك  أن نستبدل ب (who) أيَّ أمر آخرَ تابعٍ للنظام.

 

        وهناك طريقة أخرى للحصول على المعلومات باستعمال (man -k <word> ) ¡ وذلك بأن

يبحث (man) عن كلمة "word" أو أي كلمة أخرى في معلوماتِ أحد برامج النظام.

الفصل الثاني

 

الملفات والأدلة

 

1.2    عمل ملف جديد و إظهار المحتوى           

2.2    سرد الملفات

3.2    الأدلة

                1.3.2 جذرالأدلة ، تشعب الأدلة

                2.3.2 أدلة العمل

                3.3.2 التنقل بين الأدلة

                4.3.2 الأدلة الرئيسة والمنسوبة

                5.3.2 عمل دليل جديد

                6.3.2 إضافات  لجدولة الملفات والأدلة              

                7.3.2 نظام الملفات

 

4.2    الأدلة التقليدية لدى يونيكس

 

                1.4.2 الدليل الجذر root-directory  

                2.4.2 دليل البرامج /bin 

                3.4.2 دليل ملفات التعليمات /etc

                4.4.2 الدليل المؤقت /tmp

                5.4.2 دليل المستخدِمين

                6.4.2 دليل الأجهزة  /dev

 

5.2    حقوق الاستعمال والحماية

                1.5.2 جدولة الحقوق                

                2.5.2 أحرف إضافية للحظر والحماية

                3.5.2 تغيير و إلغاء الحقوق 

6.2    تغيير الملكية و التاريخ

                1.6.2 تغيير الملكية  

                2.6.2 تغيير تاريخ الملكية   

7.2    إظهار محتويات الملفات

                1.7.2 الإظهار الكلي لمحتويات الملفات

                2.7.2 الإظهار التدريجي                             

                3.7.2 إظهار بداية ونهاية الملف                    

                4.7.2 الإظهار البينري binary-coded

                5.7.2 إظهار نوعية الملف                          

8.2    إدارة وتنظيم الملفات                         

                1.8.2 تغيير الاسم           

                2.8.2 طبع ونسخ الملفات

                3.8.2 الإشارة لارتباط الملفات

                4.8.2 إزالة وحذف الملفات

                5.8.2 إزالة وحذف الأدلة

                6.8.2 البحث عن الملفات

9.2    ملفات الأجهزة والوحدات     

الفصل الثاني

الملفات والأدلة

 

        تقوم أنظمة تشغيل الحواسب باستعمال الملفات (Files) لتنظيم المعلومات والاحتفاظ

بها، ويكون محتوى هذه الملفات برامجَ أو معلوماتٍ تحتاج لها البرامج ، أو معلوماتٍ شخصيةً

يُحتفظ بها على شكل سجل أو بيان أو صورة ...إلخ . ولكل ملف اسم يختلف عن الآخر، أي لا يجوز

إعطاء الاسم الواحد لأكثرَ من ملف واحد في الدليل ذاته. وأسماءُ الملفات يجب أن لايتجاوز حجمها

14 حرفاً لكل ملف. وتتكون غالباً من أحرف ورموز، ويجب الانتباه عند التسمية إلى إدخال الأحرف

الصغيرة والكبيرة، حيث أن (Letter  و letter  و LETTER ) تختلف ، أي أن اسم Letter يمكن

إدخاله بأشكال عديدة . بخلاف نظام التشغيل التابع للحاسوب الشخصي  MS-DOS ، الذي لا يقارِن

ما بين الأحرف الكبيرة والصغيرة في تسمية الملفات، إنما يفرق فقط في وضع النقطة في الاسم ،

مثل (LETTER.TXT) , ويتكون اسم الملف في نظام DOS من 8 أحرف زائد 3 أحرف بعد النقطة،

ويونيكس يستعمل النقطة كبداية للملفات الخفية فقط مثل .profile ، وماعدا ذلك ، تكون

النقطة كأي حرف آخر.

 

        وتوجد معلومات إضافية يستعملها يونيكس لإدارة الملفات، مثل لائحة المعلومات عن

الملفات Inode (informations code) ¡ والتي تحتوي على جميع المعلومات الخاصة بالملفات

الموجودة في النظام. ويُسجِّل النظام لكل ملف مالكاً أو مجموعة من المستخدِمين . وللملف رقمُه

التسلسلي الموجود في لائحة (Inode) ، وبذلك يُسَجل من له الحق بفتحه ورؤيته وتغييره وحذفه

...الخ . ويُسَجل  أيضا عدد الأحرف (Byte) في الملف ، وتاريخَ تأسيسه وتغييره  ، وآخرَ مرة تم

فيها قراءته.

 

        وهناك ملفات الأجهزة : مثل ملفات المطاريف والطابعة وأقراص التخزين والأشرطة

والأجهزة الأخرى المربوطة بالنظام. وعليه يمكننا القول:

 

        إن نظام يونيكس يتمتع بالمرونة العالية ، حيث يرسل المعلومات إلى الشاشة أو

الطابعة لكتابتها في ملفاتها ، أي أن الشاشة أو المطراف أو الطابعة هي أيضاً ملفات .

 

        وهناك الأدلة، وهي أماكن تواجد الملفات، أي أن الأدلة تحتوي ملفات وليس معلومات أو

معطيات، وسنذكر مزيداً عن الأدلة لاحقاً.

 

1.2  عمل ملف جديد و إظهار المحتوى

 

        نعمل ملفاً جديداً بواسطة استعمال الأمر  cat:

 

_

الشكل 5

        وذلك يعني أنك عندما تدخل الأمر (cat) وبعده الإشارةَ (<) ، يرسل (cat) كُلَّ ما تكتبه

إلى الملف (file)¡ بعد أن تضغط المفاتيح (Ctrl -D) .

 

        وإذا أردنا أن يُظهر يونيكس ما كتبناه على الشاشة نُدخل الأمرهكذا:

 

$ cat  file                                 

this is my 1. file in UNIX           

 

        وكما ترى ، فإن برنامج (cat) متعددُ الجوانب ، وكلمة (cat) تعني (concatenate)

تركيب . وتستطيع أن ترفق بعد (cat) عدة ملفات لتَظهَرَ على الشاشة ، أو تُرسَلَ إلى الطابعة

بالتتالي ، أو إلى ملف آخر يجمعها فيه وذلك كالتالي:

 

$ cat     personal   adress    telephon    > staf

 

        ونفهم من ذلك أن الملفات (personal   adress  telefon) تُسَجَّلُ محتوياتُها في ملف

جديد أسميناه (staf) ¡ وتبقى الملفات المنقولة كما هي. وفي حالة عدم وضع > staf بعد cat ¡

يُظهر لنا (cat) محتوى الملفات واحداً تلو آخر على الشاشة فقط. وملخص ذلك، أننا نستطيع

استعمال (cat) لجمع معلومات  كثيرٍ من الملفات في ملف واحد، أو أن نكتبَ الملاحظات ونُخزنَها

في ملف جديد . وفي حالة إدخال الأمر (cat) بدون إضافات، يُظهِر ما نكتبه على الشاشة فقط دون

تخزين.

 

2.2  سرد الملفات

 

يُظهر برنامج  ls  ما يحتويه الدليل من ملفات على الشاشة:

 

$ ls

personal    adress    telefon   staf

$

الشكل 6

 

        وبواسطة استعمال الإضافات تتنوع حالات الإظهار. وبعض هذه الإضافات كالرموز المُمَثلة (?

 * ) وتسمى meta character . وهذه الرموز تُعد بديلة عن الأحرف المقصودة في الكلمة عند

البحث عن أحد أسماء الملفات ، ومعنى ذلك أنه إذا أردنا إظهار قائمة الملفات بالأسماء التي

تبدأ بحرف معين مثل(p) نستعمل كتابة الأمر هكذا:

 

ls      p*

personal        peter

$

 

        وهنا نبين حالة استخدام علامة الاستفهام التي تنوب عن حرف واحد :

 

$ ls     persona?

personal

$

 

        وحالة اُخرى:

$ ls   pe??r

peter

$

 

وفي حالة وضع الإضافة (-a) يظهر لنا في اللائحة جميع الملفات، ومن ضمنها الملفات الخفية:

$ ls   -a

.          ..         .profile    personal       petor    adress    staf

$

 

        وملف (.profile) يحتوي على الإيعازات الأولية التي تُنجَزُ عند تشغيل النظام يونيكس ،

وهو يشبه (AUTOEXEC.BAT) في النظام (MS-DOS). أما بالنسبة إلى النقاط ( . و .. ) فهي

إشارات الدليل، أي أننا نتواجد في أحد الأدلة المتفرعة، وليس في الدليل الرئيسي (root) .

 

3.2  الأدلة

 

        تُعتبر الأدلةُ دوسيهاتٍ للملفاتِ أو بالأحرى فهارسَ وجداولَ لها، ومحتويات هذه الأدلة

تتكون من الملفات فقط ، أي أن الأدلة لاتحتوي على أية معلومات. إنما تكون المعلوماتُ موجودةً

في الملفات فقط .

 

        لنتصور بانَّ لدينا في الحاسوب 10.000 ملفاً بأسماءٍ ومجالات مختلفة، هل يكون

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

المساعِدةُ الحقةُ في تنظيم الملفات وترتيبها في النظام. ومن المستحسن وضع الملفات في أدلة

تشير إلى نوعها مثل دليل  /dev (device)¡ الذي يحتوي على ملفات الأجهزة كالطابعة

والمطراف... ويونيكس شبيه من هذه الناحية التنظيمية - فيما يتعلق بالأدلة - بالنظام  MS-

DOS ¡ وليس ذلك بغريب لأن مهندسي MS-DOS   اقتبسوا ذلك من النظام يونيكس.

1.3.2   جذرالأدلة ، تشعب الأدلة

 

        إن الأدلة الموجودة في نظام يونيكس تشبه في تنظيمها جذر الشجرة، إذ يشكل  (root-

directory) الجذرَ الرئيسيَّ الذي تتفرع منه الأدلة الفرعية (directoris ).

 

_

 

_EMBED PBrush_ _جذرالأدلة

 

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

ملفات تحمل الاسم  نفسـه ولكن في دليل آخر، وفي حالة العمل بهذه يجب إدخال اسم الدليل معها

هكذا (/usr/text/filename). أما في حالة إدخال الأدلة فيجب استعمال  الفاصل / ، لأنه يدل

على أن هذا الاسم هو دليل. ومثال على ذلك أن الدليل /usr  دليل متفرع من الدليل الرئيسي / 

(root) ¡ أما (/text) فهو دليل فرعي من /usr  ¡ والملف filename  يحتوي على المعلومات

التي نقصدها ، أي أنه يجب إدخال الطريق والعنوان للتوصل إليه.

 

2.3.2  أدلة العمل

 

        إذا أدخلنا الأمر  pwd بعد المحث ، يبلغنا النظام اسمَ الدليل المعمول به حالياً. و

pwd  تعنيprint workings directory  ، أي أن اسم الدليل الذي نتواجد به يظهر على الشاشة

على النحو التالي:

 

$ pwd

/usr/ziad

$

الشكل 7

 

        وهذا يعني أنَّ دليل العمل الحالي هو /ziad ¡ وهو دليل فرعي من دليل /usr .

 

        وهنا لا بد من الإشارة إلى أنَّ كلَّ مستخدِم في نظام يونيكس له دليلُ عمل خاصٌ يسمى  home

directory  ، وعندما يسجل مدير النظام مستخدِماً جديداً، فإنه يسجل له دليلَه الخاصَّ والذي

يكون دليلاً فرعياً من دليل  /usr أو  /home  ، و يحمل اسم المستخدِم الجديد.

 

3.3.2  التنقل بين الأدلة

 

        نلاحظ من خلال الشكل التالي أنه بواسطة الأمر cd (change directory)   يتاح لنا

التنقل بين الأدلة:

$ pwd

usr/ziad

$ cd /etc

$ pwd

/etc

 

        وهنا يَظهَرُ موقعنا بواسطةpwd  ¡  وهو الدليلusr/ziad  ¡ ونغير الموقع بواسطة cd ¡

ويصبح  /etc .

 

        وفي هذا الشكل نعود إلى موقعنا الأصلي:

$ cd /usr/ziad

$ pwd

/usr/ziad

 

4.3.2  الأدلة الرئيسة والمنسوبة

 

        إنَّ الأدلة التابعة للجذع -كما ذكرنا سابقاً - هي الأدلة الرئيسة ، وتبدأ بالفاصلة /

وتتبعها الأدلة المنسوبة، أي الفرعية ، وهذه تبدأ بدليل رئيسي بالإضافة إلى /:

$ pwd

/usr/ziad

$ cd text

$ pwd

/usr/ziad/text

$

        وهنا ترى أن /usr  هو دليل رئيسي ، و/ziad   منسوبٌ إليهِ ، والدليل /text  منسوبٌ

إلى الدليل /ziad  . وتلاحظ أننا غيرنا مكان العمل من /usr/ziad  إلى  /usr/ziad/text دون

ذكر الطريق الكامل ، أي بدل (cd  /usr/ziad/text  ) أدخلنا (cd text) ¡ لأن موقعنا كان

/usr/ziad.

 

        وإذا أردنا الخروج من هذا الدليل إلى الخلف نستعمل الأمر cd و النقطتين (cd ..)  

¡ وهاتان النقطتان تعنيان دليل التواجد لدى النظام:

 

$ pwd

/usr/ziad/text

cd..

$ pwd

/usr/ziad

 

5.3.2  عمل دليل جديد

 

        بواسطة الأمر (make directory)  mkdir نستطيع عملَ دليل جديد:

 

$ pwd

/usr/ziad

$ mkdir text2

$ cd text2

$ pwd

/usr/ziad/text2

$_

الشكل 8

 

        بذلك عملنا دليلاً جديداً منسوباً إلى الدليل/ziad   . ونظام يونيكس يسمح بوضع دليل

جديد شريطة حيازة الصلاحيات بذلك ، وشريطة أن لا يكونَ في الموقع نفسه دليل بهذا الاسم.

6.3.2  إضافات  لجدولة الملفات والأدلة

 

        لدى استعمال الأمر ls  يُظهر يونيكس الملفات والأدلة دون إظهار النوعية وذلك كالآتي:

 

$ ls

personal adress peter staf text text2

 

        وفي هذه الحالة يتبين استعمال الإضافة -f بعد ls :

 

$ ls -f

personal  adress  peter*  staf/  text/  text2/

 

        وتظهر الأدلة مضافاً إليها الفاصلة / وأسماءُ البرامج مع نجمة *.

 

        وهناك إضافات أخرى لبرنامج   ls  مثل -aR ¡الذي يُظهِرُ لك جميع الأدلة المنسوبة إلى

دليل معين ومحتوياتها:

 

$ ls -aR staf

staf

data:

41520.dat  38123.dat  40532.dat

$

 

7.3.2  نظام الملفات Filesytem

 

        لنظام يونيكس نظام أرشيفيُّ  "Filesystem"  يعمل على تخزين وتنظيم الملفات والأدلة،

وهذا النظام يشبه إلى حد كبير نظام السواقات diskdrives¡ والتي تكون على شكل C:\  D:\ A:\

 لدى النظامMS-DOS ، وهي أُسطواناتُ خزنِ المعلومات المرتبطة به، وتسمى harddisk 

وfloppydisk  ، وكل واحدة من هذه السواقات تشكل نظامَ ملفات مستقلاً ، أما في نظام يونيكس

فيوجد نظام الأرشيف ، وأسماء السواقات drives ، وهي بحد ذاتها ملفاتٌ  تسمى Disk1 Disk2 ...

، أشرطة التخزينTape-Device  تسمى  Tap1 Tape2 ...  ...إلخ . والنظام يونيكس يعتبر جميع

السواقات نظامَ ملفات filesystem واحداً ،أو أن تُقسَم كل وحدة على حدة كنظام ملفات مستقل.

وهناك أيضاً نظامُ ملفات مطوَّرٌ يُستعمل في أنظمة الشبكات يسمى NFS .

 

4.2 الأدلة التقليدية لدى يونيكس

 

        من المعروف أنَّ نظام يونيكس يحتوي على الأدلة التقليدية، وهذه الأدلة تحتوى على جميع

برامج وملفات النظام ، وهي أدلة رئيسة ثابتة تابعة للدليل الجذر... وإليك أكثرَ الأدلة

رواجاً:

 

  الدليل الجذر            / 

البرامج الرئيسة                 /bin

ملفات إضافية للبرامج  /etc

المستودع المؤقت             /tmp

دليل إضافي للمستخدِمين      /usr

دليل الأجهزة المرتبطة /dev

1.4.2  الدليل الجذر root-directory

 

        دليل الجذر هو الدليل الأعلى في النظام ، وكل الأدلة الأخرى تكون متفرعة منه، وهو

الدليل الأم للمستخدِم الرئيسي root ، وبه نجد الملفات الخاصة وملفات العمل التلقائي مثل

الملف  .profile، الذي يحتوي على الأوامر التلقائية التي تُنفذ في حالة تشغيل الجهاز. وفي

دليل الجذر نجد أيضاً برنامج نواة نظام التشغيل ، والنواةُ هي البرنامج الرئيسي للنظام

وتوابعه، وهي التي تحرك الجهاز وتوابعه وتجعلها قابلة للعمل. ويتم إدخال هذا البرنامج (

النواة) من وحدة التخزين إلى وحدة الذاكرة تلقائياً (boot) حال إدخال الطاقة إلى الجهاز.

ويسمى البرنامج في الغالب  unix أو vmunix ، وحجمه يتراوح ما بين نصف إلى واحدMB . وسنقدم

مزيداً من الشرح والإيضاح حول هذاالموضوع في جزء النواة من هذا الكتاب.

 

2.4.2  دليل البرامج /bin

 

        في هذا الدليل نجد البرامج الإضافية التابعة لنظام يونيكس ،التي تقوم بأعمال

مختلفة لخدمة المستخدِم مثل البرامج  cat و ls وpwd  وغيرها.

 

3.4.2  دليل ملفات التعليمات /etc

 

        دليل /etc   يحتفظ  بملفات تعليمات النظام، ومن أهمها : الملف group الذي يحتوي

على المعلومات الخاصة بالمجموعات ، والملف passwd الذي يحتوي على  كلمات المرور السرية ،

وأرقام وأسماء المستخدِمين والأدلة الخاصة بها، ومحتوى الملف passwd  يكون على هذا الشكل:

 

ziad:jpiygOU.DInTs:201:200:ziad yousef:/usr/ziad:/bin/sh

 

        وكما نرى أعلاه فإن كلمة المرور مرموزة وليس لها معنى لغوي مفهوم ، وهذا يمنع حل

الرموز من قبل شخص آخر. وبعض أنظمة يونيكس تستعمل النجوم بدل الرموز لإخفاء الكلمة.

ولايستطيع أحد قراءة الملف passwd  إلاَّ root  ¡ وفي ملف group نجد أسماء المجموعات

والمستخدِمين التابعين لها. وفي هذا الدليل نجد أيضاً ملفاتٍ أخرى مثل:motd  الذي يحتوي على

معلومات توجيهية تظهر على الشاشة أثناء تشغيل المطراف ، ومثل الملف utmp الذي يحتوي على

معلومات المستخدِمين الذين يعملون حالياً في النظام ،أما wtmp  فهو ملف احتياطي مؤقت يحتوي

على الأعمال التي يقوم بها المستخدِمون حالياً، وهذا الملف يتم تفريغه تلقائياً من حين لآخر ،

أسبوعياً أو شهرياً حسب ما يقرره مدير النظام.

 

4.4.2  الدليل المؤقت /tmp

 

        في الدليل المؤقت تخزن المعلومات في ملفات مؤقتة لتحذف بعد الانتهاء من العمل من

قبل النظام ، وذلك لأجل الحصول على السعة في أسطوانة (وحدة) التخزين ولمنع التضخم،

 

5.4.2  دليل المستخدِمين   /usr

 

        إنَّ دليل مستخدِمي النظام /usr لايحتوي في أغلب الأحيان على ملفات، ولكنه يحتوي على

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

بالمستخدِمين. وفي بعض الأحيان يتواجد الدليل /usr/etc الذي يحتوي على ملفات التعليمات

الخاصة بالمستخدِمين. وفي الدليل /usr/lib نجد جدول الوظائف للغات البرمجة. وفي 

/usr/inc/ude  نجد معلومات خاصة للبرمجة. و /usr/man  يحتوي على المراجع (manuals) .

و/usr/spool   يحتوي على معلومات وملفات الطباعة والبريد الإلكتروني.

 

6.4.2  دليل الاجهزة  /dev

 

        دليل /dev يحتوي على ملفات الأجهزة التابعة للنظام والمعلومات الخاصة بها، مثل

ttyp1  (مطراف) ¡ و lp1 (طابعة)، وnull  (المخرج الوهمي) .

 

5.2  حقوق الاستعمال والحماية

 

        في نظام الحاسوب متعددِ المستخدِمين Multiuser-System نجد دائما الحصانة التي تمنع

أي محاولة للعبث بالمعلومات أثناء القراءة والكتابة للملفات والأدلة، ولولا ذلك  تسـود

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

كتابة وقراءة واستخدامٍ للملفات. ويعطى للمستخدِم حالةٌ أو حالتان أو ثلاثُ حالات rwx.

 

        وحالة (r)هي للقراءة ، أما (w) فهي تشمل الكتابة والقراءة والاستخدام والحذف

والنقل والتغيير ...إلخ. و (x) للاستعمال فقط، ويمكن ترتيب وإعطاء الحالات منفردة أو مجتمعة

لإحدى مجموعات المستخدِمين أو لكل مستخدِم على حدة. ومجموع حقوق الاستعمال تسعة حقوق (rwx rwx

rwx  ) تطبق على الملفات والأدلة والمستخدِمين ، وليس على (root) مديرِ النظام.

 

1.5.2   جدولة الحقوق

 

        كما ذكرنا سابقاً فإن برنامج ls يجدول لك أسماء الملفات الموجودة في الدليل ، وإذا

أضفت لهذا الإيعاز -F ¡ فإنه يجدول لك أسماء الملفات والأدلة إلى جانب رموز توضح نوعها. أما

علامة / فإنها توضع للأدلة ، ودونها يكون الملف ملفاً عادياً ، وتوضع النجمة * للبرامج.

 

        وإذا أردنا جدولة كل المعلومات عن الملفات والأدلة فيجب أن نضيف -l إلى الأمر ls:

 

$ ls -l

drwxr-xr-x    2      ziad      staf           320     04       Mar       10.33

letter

        الاسم الساعة          التاريخ    الحجم       المجموعة المستخدِم الارتباط 

الحقوق

الشكل 9

 

        وهنا تظهر صفات الملف والحقوق (drwxr-xr-x) ، وشرحها من اليسار إلى اليمين: حيث

أن الحرف الأول  d  يعني  دليل (directory) ، وإذا كان الحرف b أو c فهو يعني أنه ملف جهاز

( device  =  c  or  b ) وأن إشارة الطرح - تعني أنه ملف عادي .

 

 أما الحروف التسعة الباقية فتكون على هذا النحو  r w x r - x r - x  ¡ (   r= read 

قراءة ¡   w= write كتابة ¡  x= using  استعمال ، و - لاحقوقَ)

 

        الحرف الثانى من اليسار ولغاية الرابع يختص بحقوق المالك (owner) للملف أو الدليل

، ومن الخامس وحتى السابع يختص بحقوق المجموعة التابع لها المالك  group ، ومن الثامن

لغاية العاشر يختص بحقوق الباقين من المسجلين لدى النظام  others وفق الترتيب التالي :

 

ls   -al

drwxr-xr-x    5      ziad    staf            1024 10     Feb    12.22  .

drwxr-xr-x    33     root   system        4096 11     Jan    11.10  ..

drwxr-xr-x    2      ziad    staf            320   04     Mar   10.33  letter

-rwxr-x ---    1      ziad    staf            35932       10     Apr    11.34 

personal

 

        انظر إلى الدليل letter   (في الأعلى)، لقد اعتبر دليلاً لأن أول حرف من زاوية الحقوق

هو d  ¡ والحروف التسعةالتي تلي تعني :

 

-      الحروف الثلاثة الأولى r  w  x   فيها جميع الحقوق للمالك  ziad   .

-      والحروف الثلاثة التي تليها r - x  ¡ يحق فيها للمجموعة القراءة     والاستعمال .

-      أما الحروف الثلاثة الأخيرة فهي لباقي المستخدِمين الذين يحق لهم ما        يحق  

للمجموعة.

 

        وبالنسبة إلى ملف personal  ¡ فهو يُعَدُّ برنامجاً (ملفاً) ، لأن أول رمز (-) ¡ ولأن

الثلاثة الأولى من التسعة تحتوي على x ¡ وهي تعني استعمال البرنامج. والاستعمال بمثل هذه

الحالة يكون في أغلب الأحيان معطىً للبرامج والأدلة، وليس للملفات العادية. أما الثلاثة

الأخيرة - - - ، فهي لا حقوقَ فيها لباقي المستخدِمين.

 

2.5.2  أحرف إضافية للحظر والحماية

 

        ذكرنا سابقاً أنه يوجد تسعة أحرف للحظر والحماية ، مقسمة إلى ثلاث مجموعات ، كل

مجموعة مقسمة إلى ثلاثة أحرف :

 

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

تمثل حقوق المجموعة التي يَنتَسِبُ لها المالك ، والمجموعة الثالثة تمثل باقي المستخدِمين في

النظام.

 

        في المجموعة الأولى: الحرف الثالث يكون - وتعني حظراً كاملاً ، أما  x  فتعني حق

الاستعمال . وبدل (x  أو -) يمكن تحديد الحظر بالحرف  sأو t :

 

s = setuid-Bit:        وهذا يعني أن البرنامج يعمل بحقوق المالك أو المجموعة.

 

t = sticky-Bit:        البرنامج يُحفظ في وحدة الذاكرة طوال وقت العمل ، لكي

                        لا تعاد قراءته من وحدة التخزين في حال تكرار استعماله.

 

$ ls -l  /bin/cat

-rwsr-xr-x  1  root        system        71488    12   Okt    13.20  cat

 

        في الشكل الأعلى : البرنامج cat  نجد بحقوقه حرف s بدلآ من الحرف الثالث  x  من

المجموعة الأولى ، وفي هذه الحالة يستطيع أي مستخدِم أن يُظهِرَ محتويات أي ملف تواجَدَ في مجاله

دون أي حظرٍ أو تقييد ، لأن حرف  s  يُعطي برنامج  cat  حقوق root  مالكِ هذا الملف ، الذي له

الحق في كل شيء في النظام.

 

3.5.2   تغيير و إلغاء الحقوق

 

        كما ذكرنا: إن لكل مستخدِم و لكل مجموعة مستخدِمين حقوقاً معينة للقراءة و الكتابة

والاستعمال. وهذه الحقوق يمكننا  تغييرها أو حذفها في حال حيازتنا ملكيةَ الملف. والمدير

العام للنظام له الحق في التغيير وحذف الحقوق. وهذا التغيير يتم بواسطة البرنامج chmod 

(change mode).

 

        ويجب اعتماد إضافات التغيير لهذا البرنامج وهي  (u¡ g¡ o)¡ حيث  u تعني اسم

المستخدِم user  ¡ و g  تعني مجموعة المستخدِمين group  ¡ أما o فباقي المستخدِمين others.

 

        كما يجب مُراعاة ما ذُكر سابقاً عن الحظر واعتماد الرموز التسعة  (rwx rwx rwx

للحظر ومجموعاتها الثلاث ، وتتغيّرُ حقوقُ المجموعة الأولى بواسطة حرف u ، وحقوقُ المجموعة

الثانية بواسطة حرف  g، وحقوقُ المجموعة الثالثة بواسطة حرف o   كإضافة للأمر chmod.

 

        ويمكننا تغيير الحقوق - كلاًّ على حدة - باستعمال الحروف المذكورة أعلاه، أو سوياً

باستعمال حرف a (all) بدل  u¡g¡o، والتغيير يحصل من خلال إدخال رموز التغيير (+  -  =) ،

حيث تعني  + إضافة ، و - حذف، و = إضافة جديدة .  وبعد إدخال الحروف البديلة u¡g¡o تُكتب

الحقوق  r=read قراءة ، و  w= write كتابة ، و   x= using  استعمال.

 

        ونستطيع أيضاً إدخال أو تغيير الحرف الثالث من المجموعة الأولى بإدخال الحرفs   ¡

أو بإدخال t    ¡ كما ورد سابقاً عن هذه الحروف وعن مفعولها كبديلة للرمز x  .

 

        وهذه بعض الأمثلة التي توضح تغيير الحقوق:

 

$ chmod g+w Filename                           Filename =   ملف ما

 

        أضفنا حق السماح للمجموعة بالكتابة g+w¡ وتعني  g   مجموعة ، و+ إضافة ، وw 

كتابة.

 

$ chmod o=rx Filename

 

        الحقوق r - x   ¡ قراءة واستعمال من غير كتابة لباقي المستخدِمين o (others).

 

$ chmod a-w Filename

        إزالة حقوق الكتابة من الجميع a (all)   باستعمال w- .

 

        هذا ، ويمكن تغيير عِدَة حقوق في أمر واحد باستعمال الفاصلة ، كما في الشكل الأسفل:

 

$ chmod g=rx¡u+s File

 

        عملنا على إعطاء حقوق القراءة والاستعمال للمجموعة ، وإضافة حرف s  للمالك ، أي أن

هذا الملف يعمل بحقوق المالك كما ذكرنا في السابق.

 

        ويمكن استبدال رموز التغيير (rwx) باستعمال الأرقام (الأوكتالية 8^2)، فهي تغني

عنها . وهذه الارقام هي 1 و 2 و 4 ومجموعها  7 عند جمعها حسابياً (1+2+4=7) ، إذ تعني  rwx 

1 استعمال ، و 2 كتابة ، و 4 قراءة ، مثالُ على ذلك: 777 معناها ( rwx  rwx rwx )   ، 

ومثال آخر: 644 معناها (- r w - r - - r -  )  ...الخ .

 

        ونستطيع إدخال الحرف s   رقماً رابعاً. مثالُ ذلك:

 

        4755 وهي تعني أن جميع المستخدِمين يحصلون على حق القراءة والاستعمال، وأن مالك

الملف يحصل على جميع الحقوق، إضافةً إلى أن هذا الملفَ يعمل بحقوق المالك (rwsr-xr-x) . أما

حرف  t فيتم إدخاله بواسطة (root) مديرِ النظام فقط .

 

6.2  تغيير الملكية و التاريخ

 

1.6.2  تغيير الملكية

 

        ويتم تغيير الملكية بواسطة البرنامج  (change owne)  chown هكذا:

 

$ ls -al personal

$ -rwxr-x---  1      ziad       staf    35750       13  Feb  12.13  personal

$ chown mazen personal

$ -rwxr-x---  1      mazen  staf    35750  13  Feb  12.13  personal

 

        وتغيير ملكية الملف  personal من المالك ziad إلى المالك  mazen  لا يتمُّ إلا من قبل

مالك الملف أو مديرِ النظام root  .

 

        وجدير بالذكر أنَّ بعض أنظمة يونيكس تُحدد قسماً خاصاً من وحدة التخزين لكل مستخدِم في

استعمال مساحة محددة منها ، ويمكن أن يرفض النظام التغييرَ المرغوب به لقلة حجم المساحة

المعطاة لأحد المستخدِمين ، أي أنَّ (disk quta) المعطاة للمستخدِم تكون مستهلكةً أو غيرَ كافية

، وفي بعض الأحيان يكون مفعول البرنامجchown  ملغياً من قبل مدير النظام. وما ذكرنا عن

تغيير المالك يُطَبَّقُ أيضاً على المجموعات المالكة ، وذلك بإدخال الأمر كما يلي:

 

 

$ chgrp support personal

$ ls -al personal

-rwxr-x---1 mazen support 35750 13 fos 12.13 personal

$_

الشكل 10

 

2.6.2  تغيير تاريخ الملكية

 

        بواسطة البرنامج touch  يمكننا تغيير تاريخ آخر استعمال حصل لملف معين ، وذلك حسب

الشكل التالي :

 

$ touch personal

$ ls -al personal

-rwxr-x---1 mazen support 35750 15 sep 10.15 personal

$_

الشكل 11

 

        والتاريخ المقصود هو تاريخ النظام الحالي ووقته، ولكن يمكننا إدخال الوقت

والتاريخ كما نريد باتباع النمط التالي : سنة، دقيقة، ساعة، يوم، شهر:

 

$ touch 08100815 personal

$ ls -al personal

-rwxr-x---  1 mazen support 35750 10  Aug 8.15 personal

 

        ويمكن استعمال touch لعمل ملف جديد ، وذلك بإدخال touch هكذا:

 

$ touch samir

 

7.2  إظهار محتويات الملفات

 

1.7.2  الإظهار الكلي لمحتويات الملفات

 

        بواسطة البرنامج cat يتم إظهار ما بداخل الملف من معلومات مثلما ذكرنا في السابق:

 

$ cat  file  

this is my 1. file in UNIX           

$ cat  > file                            وهنا عملُ ملفٍ جديد

this is my 2. file

 

this is a File whithout No.

 

(Ctrl -D)                            اضغط هذه المفاتيح للإنهاء

الشكل 12

 

        ويمكن إضافة  -n  لترقيم السطور عند الإظهار، وإضافة -b لعدم ترقيم السطور الفارغة

مثل:

 

$ cat  -n file                                 

this is my 2. file

2

this is a File whithout No.

4

$ cat  -b file                                 

this is my 2. file

 

this is a File whithout No.

 

 

        وإذا أردنا إرسال محتوى الملف إلى الطابعة بدلاً من الشاشة ، فما علينا إلا كتابة

الإدخال على هذا النحو :

 

$ cat File > /dev/lp1               lp1 = ملف الطابعة

 

        وسنذكر مزيداً حول ذلك في جزء الطباعة من هذا الكتاب.

 

2.7.2   الإظهار التدريجي

 

        في حال استعمال البرنامج cat تظهر كافة محتويات الملف ، ولكنَّ هناك ملفاتٍ تكون

سعتها أكثر مما تتسع له شاشة المطراف ، ونستطيع قراءتها بالتدريج ، أي قراءةَ الصفحات

متتابعةً، وكذلك نستطيع إيقاف تعاقب الصفحات على الشاشة بضغط المفاتيح Ctrl -S ¡ ونعيد

تتابعَها بواسطة المفاتيح Ctrl -Q.

 

        ولكن ذلك ليس هو الحلَّ الصحيحَ، لأنه توجد أوامرُ أُخرى يستحسن استعمالها للإِظهار

التدريجي ، وتسمى هذه الأوامرُ more  و pg ¡ وهي التي تُظهر المحتويات صفحة صفحة:

 

$ more file1 file2 file3

 

        وبهذا المثال نسطيع رؤية هذه الملفات الثلاثة واحداً تلو آخر ، وتظهر لنا عند

انتهاء كل صفحة عبارة --more--   مشيرة إلى أنَّ البرنامجَ more  ينتظر منا السماح بتواصل

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

المفتاح Return يظهر الملف سطراً بعد سطر.

 

        ونستطيع أن نُظهر كل المعلومات المتعلقة في البرنامج more على الشاشة ، بإدخال

الحرف  h  (help) أثناء العمل بواسطة more  ¡ وذلك على الشكل التالي :

 

Most commands optionally preceded  by integer argument k. Defaults in brackets.

Star (*) indicates argument becomes new default.

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

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

<space>                      Display  next  k  lines  of  text   [ current screen size ]

z                               Display  next  k  lines  of  text   [ current screen

size ]*

<return>                     Display  next  k  lines  of  text   [ current screen

size ]

d or Ctrl -D                   Scroll  k  lines [ current screen size¡ initially 11

]*

q or Q or <interrupt>         Exit  from  more

s                              Skip forward  k  lines of  text [1]

f                               Skip forward  k  screenfuls of  text [1]

b or Ctrl -b                   Skip backwrds  k  screenfuls of  text [1]

¡                              Go to place where previous search started

=                              Display current line number

/<regular expression>       Search for  kth  occurrence of regular expression[1]

n                              Search for  kth  occurrence of last r.e [1]

!<cmd> or :!<cmd>          Execute <cmd> in a subshell

v                              Start  up  /usr/ucb/vi  at current line

ctrl -L                         Redraw screen

:n                             Go to  kth  next file [1]

:p                             Go to  kth  previous file [1]

:f                              Display current file name and line number

.                              Repeat previous command

ومن أهم هذه المعلومات الإضافاتُ s و f و   b  التي توضع أمام الأمر more:

 

إضافات more

           s    بعدها عدد السطور يقفز more إلى ما بعد ذلك العدد

        f       عدد الصفحات يقفز more إلى ما بعد هذا العدد من الصفحات

        b       يعود 10 صفحات إلى الخلف أو  Ctrl -B صفحةً صفحةً

          q     إنهاء العمل في more قبل نهاية الملف أو  Ctrl -Q

        /       بحث عن كلمة أو مصطلح بعد الفاصلة /word  وتليها Return

                 n ويعاد البحث

        !       بعد هذا الرمز نستطيع إدخال أي أمر موجود في النظام ،                    

        والعودةَ إلى more

          n     يظهر لنا الملف الآتي في حال تعدد الملفات

           p    يظهر لنا الملف السابق 

           f    يظهر لنا الملف الحالي

          =    تعيد لنا آخر أمر أدخلناه

  Ctrl -L      يعيد لنا بناء الشاشة

 

        هنا نقدم شرحاً عن برنامج pg ، وهو يشبه more إلى حد ما. ونستطيع إدخال (pg  file 

) لكي يَظهرَ لنا الملفُ صفحةً صفحةً على الشاشة .

 

        وبواسطة الحرف h  يظهر لنا المرجع help كما يلي:

 

h                              help

q or Q                         quit

 

<blank> or           \n next page

l                               next line

d or  ^D                      display a half page more

. or   ^L                      redisplay current page

f                               skeep the next page foward

n                              next

p                              previous file

$                              last page

w  or  z                        set window size and display next page

s  savefile                    save current file in savefile

/pattern/                      search forward for pattern

?pattern? or ^pattern^ search backward for pattern

!command            execute command

 

        مفتاح Return يظهر لنا الصفحة التالية  ( Return مكتوب في الأعلى بشكل \n  ¡ وهذا

يشبه الإدخال في لغة C) ¡ وإدراج السطر بحرف L  إضافة إلى عدد السطور القادمة ( L  5) ¡

وبواسطة علامة الطرح -( L -5 )   تظهر السطورالسابقة ، وإدخال 10 و Return  يظهر 10 صفحات

متتابعة،   وإدخالُ حرف  f يُظهِرُ الصفحة القادمة ، ورمز الدولار $ يُظهِرُ آخر صفحة  سابقة في

الملف.

 

        والبحث عن إحدى الكلمات يكون بإدخال الكلمة ووضعها داخل فاصلتين. فعلى سبيل

المثال ، إذا أردنا البحث عن كلمة House  فيجب كتابتها هكذا  /House/  ، وضغط Return  .

وإعادة البحث  تكون بواسطة // .  كما نستطيع البحث عن كلمة ما عكسياً ، أي  من آخر الملف

إلى أوله بكتابة الكلمة هكذا  ? House/ مع علامة الاستفهام بدل الفاصلة.

        وباستعمال الحرف n  أو الحرف p  نستطيع القفز مابين الملفات - في حالِ إظهار

العديد منها - ، وبالإمكان إدخال الأوامر بعد علامة ! ،وننهي البرنامج بحرف q  أو  Q .

ونستطيع تخزين الملف الظاهر باسم آخر ، إذا كتبنا الحرف  s وبعده فراغٌ ، ثم الاسمَ (s

file2) .

 

        والبرنامجان more و pg يعملان مع برامج أخرى للإظهار ، مثل برنامجls    وغيره ،

بواسطة استعمال الاُنبوب (|) pipe . مثال على ذلك :

 

$ ls -al | more

$ ls -al | pg

تظهر لنا - في الأعلى - قائمة الملفات بالصفحة ، وفي هذه الحالة يجب فصل البرامج  باستعمال

الاُنبوب (|) pipe ¡ وهي موجودة في أغلب لوحات المفاتيح ، ورقمُها 124 من ASCII-Code .

 

3.7.2  إظهار بداية ونهاية الملف

 

        مما نود ذكره أن برنامج  head  يُستخدم لإظهار أول الملف، والبرنامج  tail لإظهار

آخر الملف. والبرنامج head يمكن الاستغناء عنه ، لأن البرنامجين more  و sed  يقومان

بعمله.. انظر المثال التالي:

 

$ head -20 file

أو

$ sed 20q file

 

        وسنشرح مزيداً عن الأمر sed فيما بعد.

        أما البرنامج  tail  ¡ فيُظهر آخر المعلومات من الملف المطلوب، ونستطيع استعمال  -

و +  مع عدد الأسطر للانتقال إلى الأمام والخلف، بهدف إظهار محتوى الملف. وبالإمكان أيضاً

استعمال عدد السطور أو الأحرف لدى إدخال الأوامر كما هو في المثال التالي:

 

$ tail -20 file                 يظهر آخر 20 سطراً من الملف

$ tail -300c file              يظهر آخر 300 حرف من الملف

$ tail +200 file               يظهر الملف بعد السطر 200

 

        الإضافة f   تُظهر لك آخر الملف ،وحرف c  يعني  (character):

$ tail -80cf file

 

        والمثال الأعلى يُظهر آخر 80 حرفاً من الملف ، وينتظر تضخم الملف لإظهار الأحرف

المضافة إليه تلقائياً على الشاشة، وذلك  أثناء العمل في هذا الملف من قبل شخص آخر، وهذا

مهم لمراقبة العمل الخلفي للنظام (انظر المعالجة الخلفية للعمليات في هذا الكتاب). ملاحظة:

ربما لا تجد البرنامجين  tail و head  في نظامك.

4.7.2  الإظهار البينري binary-coded

 

        كلمة (بينري) تعني التعداد الكمبيوتري الذي يَستخدِمُ الطريقة الثنائية بالعدد 2

كأصل مرفوع إلى قوى مختلفة ، للتعبير عن الأعداد العشرية، والحاسوب يعمل بحساب الحالتين 0

و1 ، وهذه تكون حالة ال  Bit الواحد (خلية واحدة)، والمجموعة من هذه ال Bit's تسمى  Byte

، وهذه تتكون من  Bit 8  (بينري 10101010 عشري 170)

 

 

 1  0  1  0  1  0  1  0

128+32 +  8  +  2=170

 

 

32=2^5      16=2^4      8=2^3       4=2^2       2=2^1       0=2^0

 

        ونستطيع الاحتفاظ بعدد من 1 إلى 255 في كل   Byte ¡ ويوجد نظام خاص بهذا متعارف

عليه من قبل العاملين في مجال الحاسوب يدعى نظامَ  ASCII-Code ¡ وهنا نبين جدولَ الأحرف من 1

إلى 127 المتعارفَ عليها:

American Standard Code for Informetion  Interchange  =  ASCII

  0   NUL  21  NAK  42   *    63   ?     84   T   105  i

  1   SOH 22  SYN   43   +   64   @   85   U   106  j 

  2   STX 23   ETB   44   ¡    65   A    86   V   107  k 

  3   ETX 24   CAN  45   -    66   B    87   W  108  l 

  4   EOT 25   EM    46   .     67  C    88   X   109  m  

  5   ENQ 26  SUB  47   /     68   D    89   Y    110  n 

  6   ACK 27   ESC 48   0    69   E    90   Z    111  o 

  7   BEL  28   FS    49   1    70   F    91   [     112  p

  8   BS    29   GS    50   2    71   G   92   \      113  q 

  9   HT     30   RS    51   3    72   H   93   ]      114  r

 10   LF    31   US    52   4    73   I     94   ^     115  s 

 11   VT    32            53   5    74   J    95   _     116  t 

 12   FF    33   !        54   6    75   K   96   `      117  u

 13   CR   34   "        55   7    76   L    97   a    118  v 

 14   SO   35   #       56   8    77   M   98   b    119  w 

 15   SI     36   $       57   9    78   N    99   c    120  x 

 16   DLE 37   %     58   :      79   O  100  d    121  y 

 17   DC1 38   &     59   ;       80   P  101  e    122  z 

 18   DC2 39   '       60   <      81   Q  102  f     123  { 

 19   DC3 40   (       61   =      82   R  103  g    124  | 

 20   DC4 41   )       62   >      83   S  104  h    125  } 

                                                               126  ~ 127 DEL

 

        وأرقام ال ASCII ال 127 الأولى متعارف عليها ، أما الباقي من الأرقام فليس لها

تحديد معروف. وفي نظام  MS-DOS مثلا ، نجد أحرف اللغات المختلفة موجودة فيما فوق 127 ،

ومثال على ذلك الأحرف العربية.

 

        وهنا ترى أن الأرقام من 0 إلى 31 هي أحرف القيادة والتوجيه للطابعة ، أو المطراف ،

أو الراسم ، أو أجهزة أخرى، وعلى سبيل المثال :

 

         الحرف رقم 10  LineFeed= LF يعني أمراً للطابعة والشاشة بإنهاء السطر، ورقم 7

يعطي أمراً لسماعة الجهاز بإصدار صوت BEL ، ورقم 12  FormFeed=FF  يعطي إشارة آخر الصفحة ،

وهكذا...

 

        وإذا أردت أن تُظهر أحد الملفات التي تحتوي على أحرف غير الأحرف ما بين 0 إلى 127 ،

فيجب استعمال البرنامج  od  (octaldump) ¡ وليس البرامجِ التي عالجناها في السابق مثل  cat

¡ more ¡ ps ¡ tail ، .

 

        وبرنامج od يُظهر لك محتويات الملف المطلوب إظهاراً بينرياً ، أي بالأرقام والرموز

حسب تواجدها في الملف، ويظهر  كل Byte  على حدة بموجب ال ASCII-CODE . وباستعمال الإضافة 

-a يكون الإظهار كما هو في قائمة ASCII-CODE¡ وباستعمال الإضافة-b   تَظهر لك كل الأحرف

بينرياً ، وباستعمال الإضافة  -cيكون الإظهار كما هو متعارف عليه بلغة البرمجة  C، أي أنّ \n 

 تعني linefeed=LF  ، و \0  تعني    NUL ...إلخ  وباقي الأحرف تظهر بالعدّ الأوكتالي (octal)

 (8^2) ، وباستعمال الإضافة -h  تَظهر كل الأحرف بالعدّ (هكسا)  (hexadecimal) (16^2).

 

        وإليكَ بعض الأمثلة للتوضيح:

$ od -a filename

0000000    soh  etx  soh   bs  nul  nul  enq    8  nul  nul  etx    p  nul  nul  nul

 

$ od -b filename

0000000  201 003 001 010 000 000 005 270 000 000 003 120 000 000 000  000

 

$ od -c filename

0000000 201  003  001   \b   \0   \0  005  270   \0   \0  003    p   \0   \0   \0   \0

 

 

$ od -h filename

0000000 8103  0108  0000   05b8  0000   0350  0000  0000

 

        وإذا أردنا تخزين الأعداد أكثر من 255 ، فيجب تخزينها في عدة  Bytes  .

 

        على سبيل المثال : يمكن تخزين العدد من 0 إلى 65535  في Bytes 2 (1-16^2) ¡ وتكون

هذه مقسمة إلى Low-Byte وHigh-Byte  ¡ وتضرب High-Byte  في 256 (=8^2) بالإضافة إلى Low-

Byte لنحصل على النتيجة . وبهذا يمكن تخزين الأرقام التي تزيد عن ذلك وتُجمع فيByte 4  ...

إلخ

 

        وإليك بعضَ الشرح لإظهار هذه الأرقام:

 

        أرقام ذات اثنين  Byte دون علامة  أو مع -  :

 

$ od -d filename

0000000  33027  00264  00000  01464  00000  00848  00000 00000

 

        وفي الآتي يظهر أل Bit الأول من  High-Byte كرمز - أو + (ناقص أو زائد) :

$ od -i filename

0000000  -33027    264             0    1464            0        848           0       

   0

        وهنا أعداد في Byte مع علامة (-) :

$ od -l filename

0000000  -330278765              1464           8488             0

        وهنا أعداد مع فاصل:

 

$ od -f filename

0000000   -3.3027876e-45  4.0606406e-43  1.7684876e-52  0.0000000e+00

        وإذا استعملنا البرنامج od دون إضافة ، فتظهر الأرقام في  octal dump (Byte 2) :

$ od filename

0000000  033027  000264  000000  001464  000000  000848  000000 000000

        والإظهار للمعلومات والعمل بها في يومنا هذا يكون غالباً بتعداد الهكسا

hexadecimal.

 

5.7.2  إظهار نوعية الملف

 

        ويتم ذلك بواسطة البرنامج file لإظهار نوعية الملف :

 

$ file \bin\cat

\bin\cat:  sparc pure dinamicaly linked executable

$ file \etc\passwd

\etc\passwd: ascii text

 

        ومن المستحسن إظهار النوعية بواسطة file قبل إظهار محتويات الملفات  التي تتم

بواسطة البرنامجين cat أو od أو غيرهما للتأكد من النوعية.

8.2  إدارة وتنظيم الملفات

 

        سنعالج في هذا القسم حركة الملفات ¡ مثل تغيير الاسمِ ، ونقلِ وازدواج الملفات.

 

1.8.2  تغيير الاسم

 

        يُغير الاسم بواسطة البرنامج(move) mv  . مثال: هناك ثلاثة ملفات samir¡ kamal¡

mustafa  :

 

$ ls

kamal mustafa samir

$ mv samir muhdi

$ ls

muhdi mustafa kamal

 

        وهكذا تغيّر اسم samir إلىmuhdi  ¡ وبالمثال التالي نستطيع نقل الملف إلى دليلٍ آخرَ

، وباسمٍ آخرَ:

 

$ ls

muhdi museafa kamal

$ mkdir text                               نعمل دليلاً جديداً

$ ls -F

muhdi mustafa kamal text/

$ mv muhdi text

$ ls -F

mustafa kamal text/

$ ls text

muhdi

$_

 

        في هذا المثال عَمِلنا دليلاً جديداً باسم /text ¡ ونقلنا muhdi إليه ، واختفى muhdi

من الدليل الحالي ، لأنه أصبح في الدليل /text   ¡ ونستطيع نقل ملفات كثيرة باستعمال ( * و

? ) ، وقد ذكرنا سابقاً كيفية استعمال هذه الرموز.

 

2.8.2  طبع و نسخ الملفات

 

        بواسطة البرنامج (copy)  cp يمكن عمل نُسخة إضافية للملف باسم آخر:

 

$_

$ cp mustafa Ahmad

$ ls -F

ahmad mustafa kamal text/

$_

 

        كما يمكنك أن تنسخ الملف في دليل آخر  بالاسم ذاته:

 

$ cp ahmad text

$ ls -F text

ahmad muhdi

$_

 

3.8.2  الإشارة لارتباط الملفات

 

        لقد شرحنا عن البرنامج cp الذي ينسخ الملف ليصبح لدينا ملفان مستقلان يمكننا تغيير

محتوياتهما كُلاً على حدة. والبرنامج  ln  يربط الملفات، وذلك بعملِ ملف نظري كصورة عن ملف

معين، وليس ملفاً حقيقياً . وإذا تم تغيير محتوى أحد هذه الملفات فيتم تغيير محتوى الآخر

تلقائياً ، لأن المحتوى واحد، أي أن المحتوى والمعلومات موجودة مرة واحدة في وحدة التخزين،

بخلاف ما ذكرناه عن البرنامج cp ، الذي ينسخ الملف بكامل محتوياته فيصبح لدينا ملفان

مستقلان. وهنا مثال لارتباط ملفين:

 

$ ls -F

ahmad mustafa kamal text

$ ln kamal kamal2                  وهنا يحصل الارتباط

$ ls -F

ahmad mustafa kamal kamal2 text/

$_

 

$ ls -L

- rw-r--r--   1 ziad           staf            380   13     Feb    08.10 ahmad

- rw-r--r--   1 ziad           staf            420   15     Mar   10.03 mustafa

- rw-r--r--   2 ziad           staf            80     20     Sep    11.12 kamal

- rw-r--r--   2 ziad           staf            80     20     Sep    11.12 kamal2

drwxr-xr-x 2   ziad           staf            384   20     Sep    10.11 Text

        وهنا أظهرنا ارتباط kamal  و kamal2  ¡ وتراه بظهور عدد الارتباط 2 ، وحجمُ الملفين

هنا 80 حرفا.

 

        ويظهر الارتباط جلياً بواسطة ls -i  ، ويظهر لنا رقم الملف المعتمد لدى النظام

كالتالي:

 

$ ls -i k* ahmad

320 ahmad

402 kamal

402 kamal2

$

 

        وهنا أرقام الملفين kamal و kamal 2 ¡ 402 ¡ ومعنى ذلك أنه الملف ذاته ، والصلة

تكون الارتباط فقط.

 

4.8.2  إزالة وحذ ف الملفات

 

        يتم ذلك بواسطة الأمر  (remove) rm ¡ حيث نستطيع إزالة الملفات من الدليل الحالي

أو من أحد الأدلة الأخرى.

 

$ ls -F

ahmad kamal kamal2 mustafa text/

$ rm ahmad

$ ls -F

kamal kamal2 mustafa text/

 

        الملف ahmad لم يعد موجوداً في الدليل. ونستطيع حذفه من الدليل /text  أيضاً:

 

$ ls text

ahmad muhdi

$ rm  text/ahmad

$ ls text

muhdi

 

        ونستطيع أيضاً استعمال ( * و ? ) لحذف عدة ملفات، ولكن يجب الحذر من ذلك ، لأن هناك

احتمالاً لحذف كثيرٍ من الملفات باستعمال النجمة (*) .

 

        بعد حذف الملفات تضيع المعلومات الموجودة بها إلى غير رجعة. وننصح باستعمال

الإضافة   -i لمنع الحذف التلقائي ، وللإجبار على إعطاء الموافقة أثناء إزالة الملف المعني.

 

$ rm -i mustafa

mustafa ? n                   n  رفض الحذف

 

        وبهذا لم يُحذف الملف لأننا وضعنا n وليس y (yes  &  no)

 

5.8.2  إزالة وحذ ف الأدلة

 

        ذكرنا سابقاً أنّ الأدلة تحتوي ملفات مختلفة النوعية،  وإذا أردنا إزالة أحد هذه

الأدلة ، فيجب إفراغها من الملفات أولاً بحذف جميع الملفات والأدلة الفرعية الموجودة داخلها ،

ويتم ذلك بواسطة الأمر (remove directory)  rmdir  ¡ أو مع الإضافة  -r التي تزيل الدليل

ومحتوياته. وهذا خطر جداً ويجب الحذر قبل استعماله. ولا أنصح بذلك قبل التأكد من محتويات

الدليل.

 

$ ls -F

kamal kamal2 mustafa text/

$ rmdir text

rmdir: text not empty        لا يُحذف الدليل لاحتوائه ملفات

$ mv text/*

$ rmdir texte

$ ls -F

kamal kamal2 mustafa

$_

 

        لاحظنا في المثال الأعلى أنه لم يحذف rmdir الدليل لأنه يحتوي ملفات ، وبعد إفراغه

بواسطة rm  ¡ أعدنا الحذف بواسطة rmdir .

 

        لكن ماذا يحدث لو استعملناrm -r    ؟

 

$ ls -F

kamal kamal2 mustafa text/

$ rm -r text

$ ls -F

kamal kamal2 mustafa

 

        لقد حُذف الدليل ومحتوياته في آن معاً  !

 

        ولو كانت هناك أدلة منسوبة إلى الدليل  /text لحُذفت أيضاً ، دون معرفة ما بداخلها

من أدلة وملفات، ولذلك احذر استعمالrm -r  ¡ لأنه يُعتبر من أخطر الأوامر على الإطلاق.

 

على سبيل المثال : لو أن مدير النظام  root أدخل الأمر كالتالي   rm  -r /  ،  لحُذفت جميع

الأدلة عن بكرة أبيها من النظام ، وهذا يعني أن النظام قد دُمِّر نهائياً.

 

 

6.8.2  البحث عن الملفات

 

        هنا نشرح قدرات البرنامج find في البحث عن الملفات ومحتوياتها. حيث ذكرنا سابقاً

أنّ الملفات موجودة في أدلة مختلفة موزعة في النظام، ولدينا هناك 200 دليل تحتوي مئات

الملفات ، ولكن إذا وُجد ملفٌ في أحد الأدلة وكنا بحاجة إلى محتوياته ، فكيف يمكننا أن نجده

بسهولة..؟

 

        في البداية نشرح معايير وإضافات البرنامجfind :

 

-name                ????         اسم الملف

-perm        777           حقوق الملف

-type                 f               (d دليل) (f ملف)

-user                 ziad           مالك الملف

-group               staf            المجموعة

-newer               mustafa       mustafa الملف الأحدث من

-atime                +7            ملفات لم تستعمل منذ 7 أيام

-mtime               +7            ملفات لم تغير منذ 7 أيام

-ctime                +7            منذ7 أيام لم تغير inode لائحة

-links                2              عدد الارتباطات

 

        وهنا نشرح بعضها بالتفصيل:

-name

find -name   'a*'                      aالبحث عن الملفات التي تبدأ في

find -name   mustafa         mustafa البحث عن الملف

find / -name  mustafa                في جميع الأدلة mustafaالبحث عن

find /text -name mustafa     /textفي دليل   mustafaالبحث عن

 

-perm                        chmodلاستعمال هذا المعيار انظر الأمر 

perm 777                             rwx rwx rwxابحث عن ملف بهذه الحقوق 

perm 755                             rwx r-x r-x    ابحث عن ملف بهذه الحقوق 

perm 600                             rw- --- ---      ابحث عن ملف بهذه الحقوق 

 

-type   d                             ابحث عن أدلة

-type   f                              ابحث عن ملفات

 

        وهنا بعض الأمثلة لاستعمال برنامجfind :

 

$ find -name mustafa -exec file { }\;

 

        ابحث عن الملف mustafa ¡ واعمل بالأمر file (بواسطة -exec)¡الذي يُظهر لنا نوعية

الملف.

 

$ find -name mustafa -ok rm { };

 

        ابحث عن الملف mstafa  واحذفه بواسطة rm   بعد الموافقة (-ok).

 

$ find / -type f -user ziad -perm 777 -print

 

        ابحث عن جميع الملفات التي يملكهاziad  ¡ على أن يكون لباقي المستخدِمين الحقوق

الكاملة (777) ، وأرسل المحتوى إلى الشاشة -print .

 

$ find   / -name  'mu*'  -mtime +7-exec rm> { };

 

        ابحث عن الملفات التي تبدأ بالأحرف  mu  ¡ والتي لم تتغير منذ الأيام السبعةالأخيرة

، واحذفها من وحدة التخزين دون موافقة.

9.2  ملفات الأجهزة والوحدات

 

          ذكرنا سابقاً أنّ الأجهزة موجودة في النظام كملفات في الدليل /dev . وهذا بالطبع

يعد تفوقاً على الأنظمة الأخرى، لأن برامجَ النظام ، والبرامجَ الخاصةَ والأخرى لا تحتاج للإفصاح عن

كيفية إخراج المعلومات إلى الشاشة، أو إلى الطابعة ، أو إلى وحدة التخزين ، وتُوَجَّهُ

المعلوماتُ إلى ملف وحدة الإخراج ، أو إلى أي ملف آخر من ملفات الوحدات ، لإدخال أو إخراج 

هذه المعلومات.

 

        وتستطيع إظهار الملفات في الدليل /dev هكذا:

 

$ ls -l /dev

crw--w--w-    3      root   system        0.   1          11   Mar   10.12

console

brw-rw-rw-    2      bin     bin            2.135   22   Jul     13.10 fdo

brw-rw-rw-    2      bin     bin            2.143   24   Jul     1992         fd1

brw-------      1      sys    sys            3.    1         04   Nov   12.12 hd1

brw-------      2      sys    sys            3.    2         04   Nov   1992         hd2

brw-------      2      sys    sys            3.    3         04   Nov   1992         hd3

crw-------      1      sys    system        3.    1         04   Nov   1992         kmem

crw-rw-rw-    1      root   system        6.    0         22   Jul     13.10 lpo

crw-rw-rw-    1      root   system        6.129   22   Jul     13.03        lp1

crw-------      1      sys    system        8.    0         04   Apr    1992         mem

brw-rw-rw-    1      root   sys             4.    0         20   Jul     1992         mt0

brw-rw-rw-    1      root   sys             8.    2         12   Jul     14.13 null

crw-------      1      sys    sys            23.  1          01   Apr    1992         swap

crwx-w--w-    1      ziad    tty              15.  0          11   Mar   12.16 ttyp0

crwx-w--w-    1      root   system        15.  1          11   Mar   12.16 ttyp1

crwx-w--w-    1      root   system        15.  1          11   Mar   15.10 ttyp2

الشكل 13

 

        ومن الممكن أن يكون هناك ملفات أكثر من ذلك. وهذه الملفات  في الشكل الأعلى تبدأ

بحرف c أو b . وبدل سعة الملف في ال Bytes أي عدد الحروف تجد عدداً بفاصل (15.  1) ، أما

باقي المعلومات عن هذه الملفات فهي إلى حد بعيد تشبه معلومات باقي الملفات الموضحة سابقاً.

 

        حرف c يعني أن هذه الوحدة مخصصة لتوجيه الأحرف)  بان تُرسل المعلومات بالحرف

character  إلى الشاشة) ،  مثلا حرف b  يعني أن هذه الوحدة تُوجِّه المعلومات بالدفعة (

الرزمة) وليس بالحرف، وهذه الدفعة تقدر ما بين 512 - 1024  Bytes ، ويتم توجيهها إلى

أُسطوانة التخزين (وحدة التخزين) أو إلى شريط التخزين إلخ... والعدد الأول (بدل السعة) يعني

الرقم الرئيسي للوحدة ، والعدد الثاني الرقم التسلسلي من ذات الوحدات ، أو بمعنى آخر:

العدد الاول  major device number  ، والعدد الثاني  minor device number .

 

        ونجد في الأعلى أيضاً: وحدات التخزين الصغيرة  fd0 وfd1  ¡ ووحدات التخزين الكبيرة

hd0   hd1   hd2   ¡  والطابعات p0   اوp1  ¡ ووحدة الأشرطة ( mt0 ) ¡ والمطاريف ttyp0 

ttyp1 ttyp2  consle   ¡ ووحدة الذاكرة ( mem أو kmem ) ¡ ووحدة الذاكرة الإضافية  swap¡

وهي جزءٌ من وحدة التخزين الكبيرة ، ونجد أيضاً الوحدة الوهمية null  .

الفصل الثالث

 

المطاريف

 

        1.3    القياسات والمواصفات للمطاريف              

        2.3    إدخال المواصفات                                    

        3.3    قياسات التوصيل                                     

                1.3.3 تصفية الإدخال والانقطاع

                2.3.3 تصفية الإخراج       

                3.3.3 تفسير وتأويل أحرف القيادة

                4.3.3 احتمالات أخرى

                5.3.3 فهرس المواصفات

        4.3    ملفات القياسات والمواصفات

الفصل الثالث

المطاريف

 

        إن المطراف هو الصلة بين الإنسان والآلة (الحاسوب). ووصل المطراف بالحاسوب يكون في

العادة   seriall تسلسلياً، أي أن الإرسال والاستقبال يتم بالحرف ، ويستعمل seriall أيضاً

لنقل المعلومات عبر خط الهاتف بواسطة مترجم (محول) الذبذبة (Modem)  . أو إيصال المطراف

بواسطة شبكة الاتصال(Network)  التي تنقل المعلومات بالحزمة، وهذه الطريقة تعد أسرعَ الطرق

في نقل المعلومات مابين المطراف والحاسوب ، وهي الطريقة المتبعة حالياً، لأنّ مطاريف نظام

يونيكس تعمل في الوقت الحاضر من خلال النوافذ Windows التي تتكون من مجموعة كبيرة من

المعلومات ،التي تُنقل ما بين مطراف النوافذ والحاسوب. ونستطيع أيضاً استعمال الحاسوب

الشخصي  PC كمطراف بواسطة أحد برامج التكييف emulation للمطاريف . وأهم المطاريف لإدارة

النظام هو المطراف الرئيسي consle ¡ وهذا بدوره يكون موصولاً مباشرةً بالحاسوب ، وهو -غالباً-

من النوع الحديث تكنولوجياً ، والسريع الأداء ، والقابل لإعداد الرسوم والصور high graphics

resolution ، ويربط به ما يسمى (الفأر)  (mouse)   ، للاستعمال المريح والفعال للنوافذ.

 

        وكما ذكرنا سابقاً ،إنَّ لكل مطراف ملفاً خاصاً به في النظام يتواجد في الدليل/dev .

والمطاريف الموصولة مباشرة في الحاسوب تكون أسماء ملفاتها  tty01 أو ttyb ، أما بالنسبة

إلى المطاريف الموصولة بواسطة شبكة اتصال Network  فتكون أسماؤها ttyp01 أو ttyp02 ، وحرف

p يعني ( pseudo ) أيَّ اسم مستعار.

 

1.3  القياسات والمواصفات للمطاريف

 

        في حالة ربط المطراف بالحاسوب يكون هناك بعض التعليمات والمواصفات التي يجب أخذها

بعين الاعتبار . إذ من المعروف أن نقل المعلومات من وإلى المطراف تُذكر في عدد ال Bits التي

تُنقل في الثانية الواحدة baud-rate  ¡ فلو افترضنا أن خط النقل التقليدي ينقل مثلا 9600 

Bit في الثانية ، كم حرفا تكون هذه..؟ إن ذلك يرتبط ببعض المواصفات الأخرى التي يجب

توضيحها:

 

        إنَّ حالات النقل 300  1200  2400  4800  9600  19200  و 38400  baud هي المتعارف

عليها لنقل المعلومات. وتتراوح  الكميات الدارجة بين المطراف والحاسوب بين  9600 إلى

19200 boud ، واذااستعملنا مترجم الذبذبة ( modem )  لنقل المعلومات ، فإن الكميات تبلغ

1200 - 9600   baud .

 

        وإذا حددنا الكمية فيجب إيضاح نوعية المعلومات التي يجب نقلها. وهذه المعلومات

تتكون من Bytes ¡ وهذه بدورها تكون بحجم 6و7و8 Bit زائد  Bit  الفحص والاختبار parity-bit.

وإذا أردنا الفصل ما بين ال  Bytes فنحن نكون بحاجة إلى Bit التوقف ( stop-bit ) . وفي

أغلب الأحيان تكون المعلومات أو الأحرف مكونة من 8 Bits  زائد 2  stopp-bits  بالإضافة إلى

ذلك  Bit الاختبار (parity-bit) الذي يحتوي 0 أو 1 ، ومعنى ذلك أن عدد ال  Bitsفي ال Bytes

 الواحدة تكون زوجية أو فردية، أي even parity  أو odd parity ¡ وهذا يساعد إلى حد كبير

على حساب سرعة نقل المعلومات ، لأنَّ هذه ال Bits ستُنقل أيضاً بالمعية.

 

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

        إنَّ 9600  Baud ينقل 1070 حرفاً في الثانية لو كان كل حرف مكونا من Bits 9فقط

(8+1). وهذا يساعد المختصين على حساب مدة وكمية نقل المعلومات.

 

2.3  إدخال المواصفات

 

        ويتم ذلك بواسطة البرنامج stty الذي من خلاله نستطيع تغيير المواصفات للمطراف

ولوحات مفاتيح الأحرف.

 

ولإظهار المواصفات الحالية لمطرافنا نستعمل الأمر هكذا:

$ stty

speed  19200  baud; evenp

erase = ^H

-inpck  imaxbel  -taps

iexten  crt

        أو هكذا بالتفصيل:

$ stty -a

speed  19200  baud¡ 0 rows¡ 0 columns

parenb  -parodd  cs7  -cstopb  -hupc1  -cread  -cllocal  -crtscts

-ignbrk  brkint  ignpar  -parmrk  -inpck  -istrip  -inlcr  -igncr  icrnl  -iuclc

ixon  -ixany  -ixoff  imaxbel

isig  iexten  icanon  -xcase  echo  echoe echok  -echonl  -nofilsh  -tostop

echoctl  -echoprt  echoke

opost  -olcuc  onlcr  -ocrnl  -onocr  -onlret  -oofill  -ofdel  -taps

erase  kill  werase  rprnt  flush  lnext  susp  intr  quit  stop  eof

^H    ^U    ^W    ^R    ^O    ^V    ^Z/^Y ^C    ^\     ^S     ^Q   

^D

الشكل 14

        شكل هذا الإظهار غيرُ مرتب لكنه سهل الفهم . وإليك استعمال الحالات في الأعلى موضحةً

بالتدريج:

 

        فتح وإغلاق هذه الحالات تُنجز بواسطة البرنامج stty  ¡ بالإضافة إلى إشارة الطرح (

إغلاق) ، أو دون إشارة الطرح (فتح):

 

$ stty ignbrk         ignor Break  (لا توقف عمل البرامج)

$ stty -ignbrk                إلغاء الحالة

 

3.3  قياسات التوصيل

 

        في حالة ربط المطاريف بالنظام تتركب المواصفات والمقاييس تلقائياً (أوتوماتيكياً)

بواسطة نظام التشغيل ، وفي بعض الأحيان يكون من الضروري تغيير هذه المقاييس . شرح:

 

 

cs5 cs6 cs7 cs8  النقلByte  في 5،6،7،8¡ Bit ال عدد

[-]parenb            parity Bit  فحص إشارة الاختبار

[-]parodd            يكون زوجياً أو فردياًparity Bit 

[-]cstopb             علامات الانفصال( -cstopb 1 Bit ¡  cstopb 2 Bit)

[-]hupcl              ) modem  فصل الخط بعد الخروج أو عدم الفصل(

 

 

        شرح تفصيلي للإيضاح:

 

  cs5¡ cs6¡ cs7¡  cs8 يعني أنَّ  Byte النقل حجمها 5 ،6 ،7 أو 8 Bit

  off/on parenb       يعني أنَّ هناك إشارةاختبار parity bit أو لا ¡

                        ويكون غير مفتوح هكذا  -parenb ومفتوحاًparenb

 parodd               Byteيكون زوجيا (parodd) أو فرديا -parodd

cstopb         علامات الانفصال مابين Byte النقل1-2 Bit

hupc/ hup             يعني فصل الخط (خط الهاتف مثلآ)ا -hup لا يفصل

                        بعد الخروج.

 

1.3.3  تصفية الإدخال والانقطاع

 

        وأهمها إشارة تجاهل وقف عمل البرامج بواسطة Ctrl -C  (ignbrk) ¡ وقد تم ذكرها

سابقاً. أما الاُخرى فنشرح مكوناتها كالتالي:

 

[-]igncr              Carriage Return مراعاة

[-]icrnl               Linefeed  إلى Carriage Return  تحويل

[-]ixon               السماح بإيقاف إخراج المعلومات

[-]ixany              متابعة إخراج المعلومات بضغط أحد المفاتيح

 

شرح تفصيلي:

   igncr       تحويل ضغط مفتاح Return إلى Linefeed

  icrnl         تحويل Linefeed إلى carriage return أي عكس igncr

 ixon          وقف الإرسال في الشاشة بواسطة -ixon  ¡ ctrl-s لا

  ixany        تواصل عمل الشاشة بعد الضغط على مفتاح الفراغ

2.3.3  تصفية الإخراج

 

        إضافات التصفية أثناء الإخراج:

 

[-]opost      السماح بالتصفية

[-]olcuc      تحويل الأحرف الصغيرة إلى كبيرة

[-]onlcr      Carriage Return+LF إلى Linefeed  تحويل

[-]ocrnl      Linefeed  إلى Carriage Return  تحويل

[-]inlcr       Carriage Return إلى Linefeed (LF)  تحويل

[-]icrnl       Linefeed  إلى Carriage Return تحويل

 

3.3.3  تفسير وتأويل أحرف القيادة

 

        هناك حالات عديدة تختص بتغيير رموز القيادة وهي:

 

 icanon (canonian modus) ¡ وهذه الحالة يجب أن تكون مفتوحة  icanon  ¡ وبإضافة علامة

الناقص [-] تكون مغلقة ، وهي تحول دون إيقاف البرامج بواسطة (Ctrl - C  ) ودون العمل

بمفتاح الحذف اليساري  BackSpace  .

 

        أما  echo off/on  فتكون مغلقة ، أي off ¡ وتحول دون إظهار الأحرف على الشاشة ،

مثل إدخال كلمة المرور لمنع إظهار حروف الإدخال على الشاشة

        وأحرف القيادة تتغير باستعمال stty أيضاً ، إضافةً إلى اسم حرف القيادة المراد

تغييره والحرف الجديد . وأحرف القيادة هي:

 

^H    ^U    ^W    ^R    ^O    ^V    ^Z/^Y ^C    ^\     ^S     ^Q   

^D

 

        وهذه الأحرف تتألف من مقطعين: الرمز   ^ ويعني Ctrl والحروف  A - Z  ¡ بالإضافة إلى

الرموز الأخرى #$%|/][.

 

أسماء الوظائف القابلة للتغيير

erase  c         رمز الحذف

kill            c       رمز الإيقاف

eof            c       رمز نهاية الملف

eol            c       رمز نهاية السطر

start   c       رمز متابعة إخراج معلومات المفاتيح

stop   c       رمز إيقاف إخراج المعلومات

susp   c       إيقاف البرنامج لمتابعته لاحقاً

rows   n       عدد السطور في الشاشة

cols           n       عدد الخانات في الشاشة

وc  يعني حرف القيادة character و n رقم.

 

        وهذه قائمة بأحرف القيادة المتبعة  standard

   ^H   erase         احذف الأحرف من اليسار

   ^C       intr         إيقاف عمل البرنامج أو إظهار الملف

 kill U      ^         إنهاء عمل البرنامج أو إظهار الملف

  ^\       quit        إنهاء عمل البرنامج أو إظهار الملف

      ^D      eof      إشارة نهاية الملف

  ^S/^Q    stop إيقاف العمل

 ^Z/^Y   susp         إنهاء العمل

4.3.3  احتمالات أخرى

 

        يمكننا عمل تغيير جماعي لعدة مواصفات بواسطة cooked  ¡ وبهذا نفتح icanon   و

opost  سوياً مع إضافاتهما، ونغلقهما بواسطة  raw. وهذه الأخيرة خطرة جداً ، لأنه بسبب

استعمالها لايستطيع أحد أن يوقف برنامجاً أو يحذف حرفاً من ذلك المطراف.

 

        وإذا حصلت عراقيل من قبل المطراف دون معرفة السبب ندخل المواصفة  stty sane التي

تعيد كل التغييرات إلى المستوى العادي standard.

 

cooked        مراعاة الرموز

raw            لا مراعاة ولا تغيير للإدخال

sane   وضع التغييرات العادية تلقائياً أو أوتوماتيكياً

 

5.3.3  فهرس المواصفات

 

        تعتبر الإشارة [-] حالة نفي للمقاييس ، كما هو مبين في الجدول التالي:

 

[-]parenb    parity Bit  فحص إشارة الاختبار

[-]parodd    يكون زوجياً أو فردياًparity Bit 

cs5 cs6

cs7 cs8        النقلByte  في 5،6،7،8¡ Bit ال عدد50 إلى

19200       النقل  في Bit`s ال عدد

[-]hupcl      فصل الخط بعد الخروج

[-]cstopb       علامات الانفصال( -cstopb واحد Bit¡   cstopb 2 Bit)

[-]ignbrk     Ctrl -C العمل ب

[-]istrip      الثامن أثناء الإدخال(مراعاة أم لا Bit ال

[-]inlcr       Carriage Return إلى Linefeed (LF)  تحويل

[-]igncr      Carriage Return مراعاة

[-]icrnl       Linefeed  إلى Carriage Return  تحويل

[-]iuclc       تحويل الأحرف الصغيرة إلى كبيرة أثناء الإدخال

[-]ixon       السماح بإيقاف إخراج المعلومات

[-]ixany      متابعة إخراج المعلومات بضغط أحد المفاتيح

[-]opost      السماح بالتصفية أثناء الإخراج

[-]olcuc      تحويل الأحرف الصغيرة إلى كبيرة أثناءالإخراج

[-]onlcr      أثناء الإخراج Carriage Return+LF إلى Linefeed  تحويل

[-]ocrnl      أثناء الإخراجLinefeed  إلى Carriage Return  تحويل

[-]icanon     مراعاة رموز القيادة بأحرف عادية

[-]cbreak    مراعاة رموز القيادة بأحرف

[-]echo       إظهار ضغط مفاتيح الإدخال على الشاشة

erase c          وضع رمز الحذف

kill    c       وضع رمز الإيقاف

eof    c       وضع رمز نهاية الملف

eol     c       وضع رمز نهاية السطر

start   c       وضع رمز متابعةإخراج المعلومات بضغط  المفتاح

stop   c       وضع رمز إيقاف إخراج المعلومات

susp   c       إيقاف البرنامج لمتابعته لاحقاً

rows   n       عدد السطور في الشاشة

cols    n       عدد الخانات في الشاشة

cooked        مراعاة الرموز

raw            لا مراعاة ولا تغيير للإدخال

sane           وضع التغييرات العادية تلقائياً أو أوتوماتيكياً

الشكل 15

 

4.3    ملفات القياسات والمواصفات

 

        في الملف /usr/lib/terminfo نجد المعلومات الخاصة بالمطاريف ، وفي  BSD-Uinx يكون

الاسم (/etc/termcap) . وملف  terminfoيكون مترجماً بلغة الآلة، أما ملف termcap فهو في حالة

أبجدية (text) ، أي بالأحرف فقط ، وبالإمكان تغيير محتواه دون مصاعب. ويتعين على المبرمجين

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

محتوى الملف termcap  كما يلي:

 

d0|vt100-am|vt100am|dec vt100:\

        :do=^J:co#80:li#24:cl=50\E[;H\E[2J:sf=5\ED:\

        :le=^H:bs:am:cm=E[%i%d;%dh:nd=2\E[C:up=2\E[A:\

        :ce=3\E[:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\

        :md=2E[1m:mr=2E[7m:mb=2\E[5m:me=2\E[m:is=\E[1;24r\E[24;1H:\

        :rf=\usr\share\lib\tabset\vt100:\

        :rs=\E>\E[?31\E[?41\E[?51?\E[?7h\E[?8h:ks=\E[?1h\E=:ke=\E[?1lE>:\

        :ku=E0A:kd=\E0B:kr=\E0C:kl=\E0D:kb=^H\

        :ho=\E[H:k1=\E)P:k2=\E0Q:k3=\E0R:k4:\E0S:pt:sr=5\EM:vt#3:xn:\

        :sc=\E7:rc=\E8:cs=\E[%i%d;%dr:

الشكل 16

 

        وهذا المحتوى تابع إلى المطراف من نوعية VT100 من شركة DEC ¡ وفي السطر الأول نجد

اسم نوعية المطراف، ويليه حجم الشاشة بالأحرف  :co#80:li#24  و  do=^J  ومعنى ذلك أن   

Ctrl -J يذهب بالمحث  (courser) إلى السطر الأسفل ، و up=2\E[A تعني أنَّ Ctrl -A يذهب

بالمحث سطراً إلى الأعلى ...إلخ.

الفصل الرابع

 

الأغلفة

 

1.4    الأغلفة التقليدية في يونيكس

2.4    العمل بالغلاف

3.4    تغيير غلاف الدخول

4.4    تحويلات ورموز الغلاف

                1.4.4 بدائل الأحرف

                2.4.4 توجيه خروج المعلومات

                3.4.4 توجيه إدخال المعلومات

                4.4.4 تعدد الأوامر في سطر واحد Pipe    

                5.4.4 رموز الإدراج

5.4    قدرات إضافية لغلاف سي

6.4  بدائل النظام والأغلفة   

                1.6.4 بدائل غلاف بورني    

                2.6.4 بدائل غلاف سي

7.4    برامج الأغلفة الخاصة shell-scripts  

الفصل الرابع

 

الأغلفة

 

 

        الأغلفة shells ¡ هي طليعة البرامج , ووظيفتها ترجمة الأوامر التي يفهمها ويدخلها

الإنسان إلى إيعازات آلية، ولتكون صلة بين الآلة والمستخدِم الذي يعمل بنظامها. وبرنامج

الغلاف يُدخل مباشرة إلى الذاكرة RAM بعد الدخول إلى النظام بواسطةlogin .

 

        والغلاف يُشغل البرامج المرغوبة بعد إدخالها بواسطة المطراف ، وتُرسل الإيعازات

مترجمة إلى النظام ليقوم بتنفيذها. والغلاف يشبه إلى حد كبيرالمترجمَ العاملَ في إحدى

الشركات والتي يعمل بها كثيرٌ من الموظفين مختلفي اللغات والقدرات ، ويكون قادراً على فهم

لغاتهم وأعمالهم ، ويقوم بترتيب وظائفهم حسب أصول النظام . وفي نظام MS-DOS يكون

COMMAND.COM  شبيهاً بذلك.

 

        ولكل غلاف لغة برمجة خاصة به ( ليس كلغة C أو Pascal )¡ وبواسطة أوامر هذه اللغة

نستطيع كتابة برامج بسيطة لتقوم بوظائفَ متعددة تكرارية ، لكي لانحتاج إلى إدخال هذه

الوظائف يومياً بعد تشغيل الجهاز. وهذه تعمل  كالبرامج التي تكتب في MS-DOS في ملفاتها ،

التي تنتهي بالأحرفBAT  ، وتسمى ملفات الأوامر المكدسة (batchfiles) ، وهي تسمى في يونيكس

مخطوطات الأغلفة (shell-scripts) .

 

1.4  الأغلفة التقليدية في يونيكس

 

        هناك كثير من الأغلفة ، ومن أوسعها انتشاراً غلاف بورني  (sh) Bourne-Shell  الذي

يحمل اسم مبرمجه  S.R. Bourne¡ وعلامة الدولار ($) هي المحث التقليدي لهذا الغلاف.  وهناك

أيضاً غلاف سي ( csh )   C-Shell الذي يحتوي على قدرات واحتمالات ووظائف أكثر تطوراً، وقد أُخذ

اسمه من لغة البرمجة C . ويحتوي هذا الغلاف على لغة النحو (instructions  syntax) من لغة

سي ، ونعني بذلك طريقة إدخال الأوامر والإيعازات ، ووصفَها وترتيبَها في السطور.        وإشارة

المُحثِّ في هذا الغلاف تكون عادة الرمز المئوي (%). وقد لاقى هذا الغلاف إقبالاً واسعاً في معظم

الأنظمة. كما توجد أيضاً أغلفة أخرى مثلtcsh¡ bash¡ ksh  . ولغلاف بورني sh نوع مصغر يسمى 

rsh ، ويخصصه مدراء الأنظمة للمستخدِمين الذين لايحق لهم العمل المطلق في النظام ، وبالمثال

فالغلاف (rsh)  لايسمح بتغيير الدليل بواسطة الأمر  cd .

 

2.4  العمل بالغلاف

 

        في حال تشغيل المطراف ، وبعد إدخال الاسم وكلمة المرور ، يعمل الغلاف المسجل في ملف

كلمة المرور (/etc/passwd) مباشرةً ، وتظهر علامة الغلاف $ أو % أو غيرها من علامات الأغلفة ،

أو أنها تكون قد غُيرت من قبل المسؤول عن ذلك. ومدير النظام هو الذي يسجل في الملف المذكور

نوع واسم الغلاف في حالة تسجيل أو إدخال مستخدِم جديد إلى النظام. ويستطيع المدير تغيير هذا

الغلاف في ذلك الملف في أي وقت . وبعد الدخول إلى النظام يستطيع المستخدِم user إدخال غلافٍ

آخرَ مثل csh أو غيره للعمل من خلاله ، والخروج منه يكون بواسطة exit على النحو التالي:

 

csh

% alias  1   ls  -aF

%  1

kamal kamal2 mustafa text/ .profile exefile*

exit

$ 1

1: not found

$ alias1 ls-aF

alias: not found

 

        في الأعلى ،كما  تلاحظ ، أدخلنا  csh(%) غلاف سي من خلال غلاف بورني   sh($) ،

وعملناalias  ، وهي أسماء مستعارة لاختصار الأوامر والإضافات في غلافC-shell    ، وأوعزنا إلى

  csh بأن تنتحلَ اسماً مستعاراً (1)  كبديل للأمر ls -aF  ، وأدخلنا (1) كأمر مباشر ليقوم

بدوره بالأمر ls -aF   دون إدخال الأمر والإضافات، وبعد ذلك خرجنا من csh  بواسطة  exit  ،

وعدنا إلى غلاف بورني  sh  الذي لايستعمل الأسماء المستعارة  alias ، وكانت المحاولة فاشلة

بالطبع لعمل alias من خلال غلاف بورني ($).

 

3.4  تغيير غلاف الدخول

 

        وتغيير غلاف الدخول يتم بواسطة الأمر(change shell) chsh   هكذا:

$ chsh

changeing login shell for ziad on jordsys.اسم النظام

Old shell: /bin/sh                                    اسم الغلاف الحالي بورني

New shell: /bin/csh                           الغلاف الجديد سي

 

        وهنا نرى أن الأغلفة موجودة في الدليل  /bin¡ أما الأغلفة الأخرى التي ذكرناها سابقاً

، فهي موجودة في الدليل  /usr/bin أو /usr/local/bin :

 

4.4  تحويلات ورموز الغلاف

 

        هناك رموز توجيه الإدخال و الإخراج (مثل < و >) للمعلومات من وإلى الشاشة ، أو

الطابعة ، أو إلى ملف معين ، وكذلك رموز البدائل ؟ و * التي تستخدم للبحث عن الملفات

وغيرها من الرموز المفيدة. وسنقدم للقراء في هذا الجزء تفسيراً لهذه الرموز والبدائل

المستخدِمة في الأغلفة sh و csh..

 

1.4.4  بدائل الأحرف

 

         أشرنا سابقاً إلى البدائل * و؟ وذكرنا أنَّ * هي بديلة لجميع الأحرف والرموز ، وأنَّ ؟

بديلة عن حرف واحد أو رمز، ويمكن استعمالها في عدة طرق على النحو التالي :

 

$ ls                   جميع الملفات

letter1 letter2 letter3 letter4letter2¡old text2¡old

 

$ echo letter*           letter جميع الملفات التي تبدأ ب

letter1 letter2 letter3 letter4 letter2¡old

 

$ echo letter?     وحرف ما واحد letter   جميع الملفات التي تبدأ ب

letter1 letter2 letter3 letter4

 

$ echo *2*    جميع الملفات التي تحتوي على 2 في داخلها

letter2 letter2¡old text2¡old

        وهنا استعملنا الإيعاز echo ¡ وهذا ليس برنامجاً مثل ls ¡ ولكنه أمر تابع للغلاف .

ومن الممكن استبدال  ؟  أو  *2*  باستعمال [ ] ما بين قوسين ، ووضعِ مانبحث عنه من أسماء

بداخلها كالتالي :

 

$ ls

letter1 letter2 letter3 letter4 letter2¡old text2¡old

$ echo letter[13]

letter1 letter3     والتي تنتهي ب 1 او3  letter  جميع الملفات

 

        ويمكن كتابة ذلك هكذا:  [a-z  A-Z]  ونعني الأحرف من  A إلى Z  ¡ ويمكن استعمال

[7-3!] ، وهذا لا يعني 3 أو 4 أو 5 أو 6 أو7 ، وعلامة التعجب ( ! ) تعني النفي  (negation):

 

$ echo letter[!3-7]

letter1 letter2

 

2.4.4  توجيه خروج المعلومات

 

        في هذا الشكل نوضح ما تحدثنا عنه سابقاً حول توجيه المعلومات إلى الملف أو إلى

الطابعة ، وليس إلى الشاشة:

 

$ date > tarich                tarich أرسل التاريخ إلى الملف

$ cat tarich                     tarich  أظهر محتوى الملف تاريخ

wed sep 20 12:32:15 1993

 

        وهنا لم يظهر التاريخ على الشاشة كما توقعنا، ولكنه سجل في الملف  tarich  ثم

أظهرناه بواسطة البرنامجcat  . وباستخدام علامة < يعمل ملفاً جديداً ، أو تحذف المعلومات

السابقة في الملف الموجود. أما علامة الإخراج المزدوجة <<  فتضيف المعلومات إلى نهاية ملف

موجود، وتحتفظ  بالمعلومات السابقة (انظر الشكل الأسفل):

 

$ date >>tarich

$ cat tarich

wed sep 20 12:32:15 1993

wed sep 20 13:10:10 1993

 

        أضيفت هنا المعلومات إلى الملف tarich  ¡ بينما بقيت المعلومات السابقة محفوظة.

 

        ونستطيع بواسطة < و<< أن نوجه معلومات الأخطاء التي ترسل من قبل النظام إلى ملف

معين للاحتفاظ بها.

 

$ alias1  ls  -aF  >achta

$ cat achta

alias:not found

 

لاحظ كيف وجهنا معلومات الأخطاء إلى ملف achta .

 

وهذه حالة أخرى لموضوع التوجيه:

 

$ find  /usr  -name  vi  -print  >natiga  27  /dev/null

 

        نلاحظ أن البرنامج  find  يبحث عن الملف  vi  في الدليل /usr ،ويرسل ما وجده إلى

الملف  natiga  ، وإذا حصل خطأ ما فإن النظام يرسل الخطأ إلى الملف /dev/null  ، وهذا

الملف هو سلة المهملات في النظام.

 

        وهنا تُرسل الأخطاء إلى ذات الملف الذي يحتفظ  بالمعلومات (natiga) .

 

$ find  /usr  -name   vi  -print  >natiga  27 & 1<

 

وبواسطة غلاف C-shell لانستطيع تحويل الأخطاء إلى ملف آخر، ولكن إلى ملف واحد للمعلومات

والأخطاء :

 

% find /usr -name vi -print >& natiga

 

        وهنا يجب استعمال & للإفصاح بأنَّ الأخطاء والمعلومات ترسل إلى هذا الملف. ونشير بأنَّ 

<< توضع في حالة إضافة المعلومات أو الاخطاء إلى الملف المعني بدل >.

 

3.4.4  توجيه إدخال المعلومات

 

        وكما نخرج المعلومات إلى الملف أو الطابعة بعلامة < ،فإننا نستطيع أيضاً إدخال

المعلومات مستخرجَةً من ملف ما بواسطة العلامة >. وفي العادة نُدخل المعلومات والأوامر إلى

النظام عن طريق لوحة المفاتيح، ولكنَّ هناك طريقةً  أُخرى لإدخال معلومات تكون موجودة في ملف

ما بواسطة إشارة التوجيه <. ونستطيع وضع هذه المعلومات على شكل أوامر وإضافات ، وإدخالَها

من ملف ما ليُعمل بها من خلال أحد البرامج مثل  findكالتالي:

 

 

$ cat >idafat                 idafat نعمل ملفاً جديداً باسم إضافات

/usr -name letter* -print -exet  ls<  { } \ ;  ونكتب الإضافات في الملف

Ctrl -D                               نخزن المعلومات وننهي العمل

$ find < idafat                         idafatهنا ندخل المعلومات من الملف

letter1 letter2 letter3 letter4 letter2.old text2.old النتيجة

 

        أمثلة أخرى:

 

        البرنامج wc يقرأُ ويعمل بتعداد الأسطر والكلمات والأحرف الموجودة في الملف letter1

الداخل إليه بواسطة  <:

 

$ wc < letter1

    17     460    2085  

(الأسطر 17 والكلمات 460 والأحرف 2085 )

 

        ويمكن عمل الإدخال والإخراج في آن واحد:

 

$ wc <letter1 >ichraj        ichraj  وأرسل إلى letter1 اقرأ من

$ cat  ichraj

     17    460    2085

 

4.4.4  تعدد الأوامر في سطر واحد Pipe 

 

        بواسطة علامة الأنبوب  " | "   (pipe) نفصل الأوامر المدخلة الموجودة في سطر إدخال

واحد ، لتنفيذها واحداً تلو آخرَ.

 

وهنا نلاحظ إظهار عدد الملفات في الدليل على الشاشة:

 

$ ls | wc

25     25      215          عدد الملفات 25 مثلا 

 

        وإذا أردنا إظهار ملفات متعددة الصفحات نستعمل :

 

$ cat  text2.old  |more

 

        وعلامة " | " تفرض على البرامج العمل المشترك لتكون النتيجة مشتركة أيضاً .

 

        وللحصول على العمل المنفصل للبرامج الموجودة في السطر الواحد، نضع الفواصل ( ; أو

& )  ،  وبذلك تعمل البرامج مستقلة:

 

$ pwd ; ls

/usr/ziad

letter1 letter2 letter3 letter4 letter2.old text2.old

أو هكذا:

$ pwd & ls

/usr/ziad                                                             الدليل

letter1 letter2 letter3 letter4 letter2.old text2.old الملفات

 

        ونستعمل الإشارة & في نهاية سطور الأوامر لكي تعمل البرامج خَفِيَّةً (باطنياً) ، وذلك

بأن تُرسَلَ البرامج إلى قسم المعالجة الخلفية للعمليات background  processing:

 

$ find / -name xyz.txt -print  >natija &

2375                         هذا رقم العملية

 

        في بعض الأحيان يحتاج البرنامج find   إلى وقت طويل للقيام بالبحث عن ملف ما في

جميع الأدلة الموجودة في النظام ، ولذلك أرسلنا سطر الأوامر إلى المعالجة الخلفية ،  للعمل

من وراء الستار ،  بأن نضيف العلامة & إلى آخر سطر الأوامر ، كما لاحظنا في الأعلى ، والرقم

2375 هو رقم العملية هناك . وسنجد مزيداً من الشرح عن ذلك في قسم المعالجة الخلفية

للعمليات!

 

5.4.4  رموز الإدراج

 

        تتكون رموز الإدراج ، من العلامة  \  والفواصل المرتفعة  ’ ’ و " " ، والبرامج

تحتاج هذه الرموز للإفصاح عمّا يليها (مثل \ ) ، أو ما بداخلها (مثل ’ ’ أو " ") من

المعلومات التي لا تُستعمل كأمر أو إضافة.

 

$ find / -name \*.c  -print

 

        أعلمْنا البرنامج  find ¡ أن النجمة البديلة * ما بعد \ تكون مغلقة أو محمية .

ويمكن بالطبع استعمال رموز الإدراج الأخرى (’ ’ و " ") كبديلة لرمز \ كالتالي:

 

$ find  /  -name  '*.c'  -print

$ find  /  -name "*.c"  -print<

        ورمز  \  يستعمل لحماية رمز واحد فقط  ( \*.c )¡ أما مايخص الحالات الأخرى

مثل"letter*.*") و ('letter*.*'فيجب استعمال " "و’ ’ )

 

$ echo  ' (2 * 6 ) + 2 = 14'    الإدخال       

(2 * 6) + 2 = 14          الإخراج

5.4 قدرات إضافية لغلاف سي

 

        إن غلاف سي (csh) C-Shell له قدرات تفوق أو تختلف عن قدرات (sh) Bourne-Shell¡ وفي

هذا القسم نوضح بعض هذه القدرات.

 

        في حالات الإدخال يستعمل الرمز ~  بديلاً عن  (Home-Directory)  الدليل الأم التابع

للمستخدِم (وفي Bourne-Shell  نستعمل $ بدل ~ ):

 

$ csh                         نُشغل الغلاف سي

%                                     نعمل الآن في غلاف سي

% pwd

/usr/ ahmad

% cp letter100.txt   ~/ letter100.new

% pwd

/usr/ziad

% cp letter1 ~ahmad        أو هكذا

% cd  ~ahmad

% ls

letter1  letter100.txt

% pwd

/usr/ahmad

% cd  ~ziad

/usr/ziad

 

        ونستعمل هاتين القوسين { } لوضع المختصرات المطلوب البحث عنها، وذلك عوضاً عن

الأسماء كاملةletter1 letter2 letter4 letter100.txt  ¡ وندخل المختصرات هكذا {1،2،4،100.}

 ، ونوضح ذلك بالشكل التالي:

 

% ls  letter{1¡2¡4¡100.txt}

 

letter1  letter2  letter4  letter100.txt

%_

 

        وأثناء العمل بواسطة الغلاف سي ، يمكن أيضاً تخزين الأوامر المرسَـلة إلى النظام في

History  وترقيمها، ويبدأ التعداد من 1 فما فوق¡  وإذا أردنا معرفة الأوامر التي أُدخلت من

البداية للعمل في الغلاف ، فإننا نطلبها كالتالي:

 

% history

 

ls

cp letter1   ~ahmad

cd   ~ahmad

ls

pwd

history

 

%_

 

        ويظهر لنا آخرُ 6 أوامرَ اُدخلت إلى النظام بواسطة الغلاف سي . ولإعادة استعمال أحد

هذه الأوامر نضع علامة التعجب (!) يليها الرقم التسلسلي للأمر أوْ أولُ حرف منه كالتالي:

 

% ! 6

ls

letter1 letter2 letter3 letter4 ...........

% !p                   

pwd

/usr/ziad

% !!                                          العمل بالأمر الأخير  

pwd

/usr/ziad

%_

 

 

        وإذا أخطأنا في إدخال أحد الأوامر الطويلة ، فنستعمل علامة    ^ لتصحيح الخطأ ، كي

لا نُدخل الأمر من جديد ، وذلك كالتالي:

 

% fidn -name lett* -print

fidn: not found

% ^fidn^find

find -name letter* -print

letter1 letter2 letter3 letter4  letter...إلخ

%_

 

 

        في الأعلى أدخلنا fidn بدل find وصححنا الخطأ باستعمال ^  .

 

        وباستعمال الأسماء المستعارة alias نستطيع تقصير الأوامر الطويلة.

 

% alias fl "find -name letter* -print"

% fl

letter1 letter2.............................

 

        وإذا أردنا معرفة الأسماء المستعارة المخزنة ، فإننا ندخل الأمر alias:

 

% alias

fl fidn -name  letter* -print

% _

 

وإذا أردنا حذف أحد الأسماء المستعارة فإننا نستعمل unalias هكذا:

 

% unalias lf

 

6.4  بدائل النظام والأغلفة

 

        توجد ملفات تحتوي معلومات عديدة يحتاجها النظام ويحتاجها الغلاف المعمول به ، مثل

معلومات البدائل التي تسمىvariable  . وهذه البدائل تُخزن في ملف خاص بالنظام.

 

        وبواسطة البرنامج env نستطيع إظهار محتويات هذه الـvariable   :

 

$ env

HOME=/home/ziad

SHELL=/bin/sh

TERM=vt100

USER=ziad

PATH=/bin:/usr/ucb:/usr/bin:/etc:/usr/etc:/usr/X11/bin:/usr/gnu/bin:.

LOGNAME=ziad

PWD=/home/ziad/text

HOST=jordsys

HOSTTYPE=sun4

EXINIT=set ai noto aw wa noslow opt

الشكل 17

 

        وبدائل النظام أو الغلاف  تتواجد هنا بالأحرف الكبيرة ، ويمكن إضافةُ بدائل أخرى

خاصةٍ إليها. ولكل مستخدِم تكون هناك معلومات خاصة بعمله ، ومن خلالها يعرف النظامُ التفاصيل

: ما هي أدلته ومطرافه ، واسم النظام الذي يعمل به ، ونوعيته ، والأدلة المفتوحة له،

والغلاف الذي يعمل به حالياً.

 

         وهذه الأسماءُ المكتوبةُ بالأحرف الكبيرة هي أسماءّ ثابتة ¡ وتتغير توابعها حسب حاجة

المستخدِم لهذه التوابع.

 

1.6.4  بدائل غلاف بورني

 

        كما ذُكر سابقاً ، هناك أسماء معينة للنظام تتغيير حسب المستخدِم وتسمى البدائل 

variable . وتوجد أيضاً بدائلُ أخرى بأسماء ثابتة لكل غلاف وللعامل به ، ونستطيع إظهار هذه

البدائل التي تخص غلاف بورني باستعمال الإيعاز set :

 

$ set

EXINIT=set ai noto aw wa noslow opt

HOME=¡/home/ziad

HOST=jordsys

HOSTTYPE=sun4

IFS=

LOGNAME=ziad

MAILCHECK=600

PATH=/bin:/usr/ucb:/usr/bin:/home/ziadscript:/etc:/usr/etc:/usr/X11/bin:

/usr/gnu/bin:.

PS1=$

PS2=>

PWD=/home/ziad/text

SHELL=/bin/sh

TERM=vt100

USER=ziad

الشكل 18

 

                بذلك ترى أن بعض ما أظهرناه بواسطة env من بدائل   variable  النظام

موجودة أيضاً هنا ، لأنها تضاف إلى set وهي البدائل (IFS¡ MAILCHECK¡  PS1¡  PS2  )

 

        البديلة PS1  تُظهر إشارة المحث ($) ، ونستطيع تغييرها بأن نُدخل عبارة بديلة

(Input command ->) كالتالي .

 

$ PS1=" Input command ->"

Input command ->

Input command -> PS1="$"

 

2.6.4   بدائل غلاف سي

 

        بدائل   C-Shell تكون مكتوبة بالأحرف الصغيرة، ونستطيع رؤيتها باستعمال الإيعاز set

أيضاً.

 

$ csh         ندخل أولاً أمر العمل بغلاف سي

% set

argv           ()

cwd            /home/ziad/text

filec

history        50

home          /home/ziad/

hostname     jordsys

path           (/bin /usr/ucb /usr/bin /etc /usr/etc /usr/X11/bin /usr/gnu/bin .)

prompt        %

shell           \bin\csh

status 0

term           vt100

user           ziad

الشكل 19

         يظهر هنا - مثلاً - أن  PS1 الموجودة في Bourne-Shell اسمها prompt  ¡ وهي لتغيير

علامة المحث % ،  و PWD اسمه  cwd ¡ ونجد بديلة جديدة history  تخبرنا  بعدد الأوامر

السابقة التي تخزن كما ذكرنا . والخروج من الغلاف يتم بواسطة Ctrl -D . ولكي نمنع الخروج

من الغلاف بواسطة  (Ctrl -D) يجب إعلام النظام بذلك باستعمال ignoreof  ¡ واستعمال exit  أو

  logout كبديل ل Ctrl -D  يستعمل للخروج من الغلاف. ونقوم بذلك كالتالي:

 

$ set ignoreof

 

وتوضع الأدلة التي يجب فتحها عن طريق  path  بين قوسين منفصلة بفراغ. ونستطيع إظهارها

بواسطة  $path  % echoعلى الشاشة. وإذا أردنا تغيير ذلك نستعملset  :

 

% set history =100

% echo history

100

%_

 

 

        وبهذا غيرنا history من 50 إلى 100 ، وإذا أردنا تغيير path فيجب وضع رقم ما نريد

تغييره من الموجود في path  بين زوايا [ ] :

 

% echo $path

/bin /usr/local/ucb /usr/bin /usr/etc /usr/x11.bin  /usr/gnu/bin

% set path [2]=/usr/local

% echo $path

/bin /usr/local  /usr/bin  /usr/etc  /usr/x11/bin  /usr/gnn/bin

% echo $path[2]

/usr/local

%_

        هنا غيرنا الدليل الثاني من السطر باستعمال بين قوسين زوايا [2] للإرشاد إلى ثاني

الموجودات داخل البديلة path .

 

        وتغيير نوعية المطراف Terminal يتم هكذا:

 

% set term=vt100

% echo $term

vt100

7.4  برامج الأغلفة الخاصة shell-scripts

 

        أثناء العمل بواسطة غلاف ما، نستطيع إدخال الأوامر والإيعازات أمراً أمرا ، ونستطيع

إعادة إدخالها بواسطة  history  كما ذكرنا . ولكن يمكن كتابة عدة أوامر وإيعازات وتخزينها

في ملف معين ، لكي يقوم الغلاف بتنفيذ هذه الأوامر واحداً تلو آخرِِ، بواسطة قراءة هذا الملف

وإنجاز محتوياته. وهذه البرامج تشبه ملفات BATCHFILES  في النظام MS-DOS. وهي لاتحتاج إلى

التجميع والترجمة (compile) مثل برامج Fortran   أو Pascal  أو C قبل تشغيلها.

 

        ونقوم بتشغيل برامج الأغلفة shell-scripts   بإدخال اسم الملف المحتوي على الأوامر

والإيعازات، شريطة أن يكون هذا الملف له الحقوق التالية ( rw--r--r-- ) ، أي دون حقوق

استعمال ، بعكس ملفات المعلومات العادية التي تحتوي على أحرف ،  وخلاف ذلك يُرسلُ النظام

ملحوظة خطأ  (premission denied) في حالة إدخال اسم ذلك الملف كأمر.

        ومن ميزات برامج الأغلفة (shell-scripts) هذه ، أنّ بإمكاننا كتابة برامجَ إداريةٍ

كاملةٍ لإدارة الملفات والأدلةِ ، وبرامجِ تخزينِ الملفات وحفظِها على الأشرطةِ والأسطواناتِ ، دون

اللجوء إلى اللغات الدارجة. وهذا يسهل عمل مدير النظام بعمل برامج تساعده ،  بدل استعمال

الأوامر كلاً على حدة، مما يهدر الوقت هباءً ، مثل تسجيل مستخدِم جديد ...إلخ. وهذه البرامج

لاتُغني بالطبع عن استعمال اللغات السائدة مثل C وغيرها من لغات البرمجة. ونحن لانريد أن

نشرح تعليم البرمجة بواسطة الغلاف ، فهناك كتب كثيرة في الأسواق تتناول ذلك ،  لأنه إذا

أردنا التعمق في شرحها، فإنَّ هذا يفوق حجم الكتاب ، ولكن نريد إعطاء لمحة عن البرمجة

بواسطة الأغلفة  (C-Shell  و Bourne-Shell ) فقط .

 

        سنقوم بعمل برنامج لحذف الملفات وللحصول على الفرصة لإعادة هذه الملفات إلى حالتها

الطبيعية ، بعد حذفها من وحدة التخزين.

 

        نحن نعلم بأنَّ الأمر rm يحذف الملفات إلى غير رجعة ، ونحن نريد الآن أن نبرمجَ أمراً

يحمي الملفات ، ويعيد وجودها كبديل للأمر rm . وسنسمي هذا الأمر (الملف)del  ¡ وسنكتب في

هذا الملف الأوامر اللازمة للاحتفاظ بالملفات المراد حذفها في دليل إضافي لحين حذفها نهائيآ.

وسنستعمل في هذا الملف الأمر mv لنقل الملفات إلى الدليل الإضافي ، وسنستعمل -u كإضافة

لإعادة هذه الملفات إلى حالتها الطبيعية ، وتوضع هذه الإشارة كإضافة بعد الأمر ، بالإضافة إلى

اسم الملف المعني .

 

        ويكون عمل هذا البرنامج فيما بعد على النحو التالي:

 

        نُدخل الأمر del ¡ وبعده اسم الملف المراد إزالته (del file) . وإذا أردنا إعادة

الملف فيجب إدخال الإضافة -u واسم الملف file del -u . وفي الحالتين يظهر إعلام الخطأ في

حالة عدم إدخال اسم الملف. ويسألك البرنامج عن التأكيد بأن تدخل Y أو Yes للموافقة على ما

تريده ، وبعد ذلك يُنفَّذ الأمر. والملفات التي نريد إزالتها مؤقتا تُنسخ في الدليل  /puffer

وتبقى هناك . ويمكن إعادة نسخها في الدليل الحالي للمستخدِم إذا دعت الحاجه لذلك . واسم

الدليل (/puffer) يمكن أن يكون أيَّ اسم تختاره خصيصا لهذه الغاية .

 

        وهنا نقدم لك نسخة البرنامج الذي يعمل بالغلاف  Bourne-Shell:

 

 1     #!/ bin/sh

 2

 3     puffer=$HOME/puffer

 4

 5     if  [  $1  =  '-u'  ]

 6     then

 7             for def  in  $puffer/def.*

 8             do

 9                     .  $def

10                    echo  -n  "$file  ? "

11                    read  answer

12                    case  $answer  in

13                    y|yes

14                            cd $dir

15                            mv  $puffer/$copy  $file

16                            rm  $puffer/def.$copy

17                            echo File $file  recovered

18                            echo "  "

19                            ;;

20                    *)

21                            ;;

22                    esac

23            done

24     else

25            for  file in $*

26            do

27                    copy='basename $file'$$

28                    if [  -r  $file  ]

29                    then

30                             mv  $file  $puffer/$copy

31                            echo "File=$file; Copy=$copy;  dir='pwd' "

>$puffer/def.$copy

32                    else

33                            echo File  $file  not found  !

34                    fi

35            done

36     fi

 

الشكل 20

 

        وفي السطر رقم 1 تكون علامة # ، والتي يكون ما بعدها معلومات تخص المبرمج ، ولكن

إذا أضفنا إليها (!) تصبح معلوماتٍ يقرؤها النظام كإيضاح لنوعية الغلاف ، وبهذه الحالة

(#!/bin/sh) يكون هذا البرنامج مُحَرَراً ليعمل بغلاف  sh bourne-shell

 

        في السطر رقم 3 اسم الدليل الذي تتواجد به الملفات المقصودة ، وهذا الاسم يكون

اسماً بديلاً.

 

تُرَقَّمُ الإضافات من 1$ إلى 9$ ، أي أنه لدى إدخال الإضافات يعد النظام من 1$ إلى 9$ ، وذلك

حسب إدخالها في سطر الأوامر . وفي السطر رقم 5 نرى أن 1$ تحتوي الإضافة  -u ¡ وبهذه الحالة

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

الإضافة -u  يعمل البرنامج من السطر 25 إلى 35 ، أي يُزيل الملف مؤقتاً.

 

        ويعمل البرنامج بدورات مشتَرَطةٍ  if  ¡ وتنتهي هذه الدورات ب fi ¡ وللبرنامج دورتا  

 if ¡ واحدة رئيسة وواحدة متفرعة ، ونستعمل else و then  سواء عُمِلَ بالشرط أم لا.

 

        في السطور 25 إلى 35 تتم إزالة الملف مؤقتاً (بوضعه في الدليل   puffer) ¡ وتبدأ

هذه العملية في دورة do....for وتنتهي ب done ¡ وموجود في هذه الدورة دورة  if  التي

تنتهي ب  fi   ¡ وتعمل دورة for   مادامت تتواجد معلومات بالإضافات المخزونة ، والمتعارف

عليها هنا ب ($*) ، بأن تُؤخذ واحدةً تلو أخرى ، لأنها تحتوي أسماء الملفات المراد إزالتُها .

مثال:   del file1 file2  ، وهذا معناه أن file1  يتواجد في 1$ ، وأنfile2  في 2$ ...إلخ

.

 

        وعندما ينتهي برنامج mv في السطر رقم 30 من العمل تعاد الدورة ، وتأتي البديلة

الثانية والثالثة إلخ.. وذلك في حالة تعدد الملفات المراد حذفها. وعلامة $$ في سطر 27 هي

بديلة ثابتة لرقم العملية هذه . ووظيفة الأمر basename  هي أن يقتطع اسم الملف دون الدليل.

وفي سطر 28 يتأكد البرنامج من أن الملف المراد إزالته قابل للإزالة (له حق القراءة) وأنه

موجود فعلا في الدليل . وفي هذه الحالة (then) (السطر29) يُعمل بالسطر 30 لحذف الملف . وفي

حالة عدم وجود الملف المعني يظهر File not exist  ، وفي السطر 31 ينسخ البرنامجُ اسمَ الملف

الأصلي ، ويعطيه اسم ملف بديل (def.$copy  ) .

 

        وفي السطور من 9 إلى 22 تكون عملية إعادة الملف إلى حالته الأصلية بواسطة الإضافة

(-u) . وبما أن معلومات الملف المحذوف موجودة في ملف آخر له الاسم الأصلي والمضاف له def

فليس صعباً إعادته إلى حالته الأصلية . وفي السطر 10 يسأل البرنامج عن الموافقة y أو yes 

وبعد ذلك ( الإضافة  -n تحول دون مواصلة العمل لحين إدخال ( yأو n ) ، وفي السطر 14 ننتقل

إلى الدليل الأصلي للملف ($dir) . وأمر mv في السطر 15 ينقل النسخة المسجلة باسم def.file 

إلى الدليل الأصلي المتواجد حالياً ، وبعد ذلك تُحذف النسخة من دليل /puffer . وفي السطر 20

يوجد (* التي تراقب حالة عدم إدخال  y أو yes  وينتهي البرنامج في هذه الحالة دون إنجاز

أي عمل ما.

 

وهنا نقدم لك نسخة البرنامج لغلاف C-Shell :

 1     #!/ bin/csh

 2

 3     set puffer=~/puffer

 4

 5     if  [  $1  ==  -u  ] then

 6             foreach def  (  $puffer/def.*  )

 7                     source  $def

 8                     echo  -n  "$file  ? "

 9                     set  answer=($<)

10                    switch  ( $answer )

11                    case y

12                    case yes

13                            cd $dir

14                            mv  $puffer/$copy  $file

15                            rm  $puffer/def.$copy

16                            echo File $file  recovered

17                            echo "  "

18                            breaksw

19                    default:

20                            breaksw

21                    endsw

22            end

23     else

24            foreach  file  ( $* )

25                    set  copy='basename $file'$$

26                    if (  -r  $file  )  then

27                    mv  $file  $puffer/$copy

28                    echo "set File=$file; Copy=$copy;  dir='pwd' "

 >$puffer/def.$copy

29                    else

30                            echo File  $file  not  found  !

31                    endif

32            end

33     endif

الشكل 21

 

        وهذا البرنامج يعمل تماماً مثل برنامج Bourne-Shell ¡ ولكنّ هناك بعضَ الاختلاف في

كتابة البرامج النحوية (syntax).

 

        هناك مثلا إضافات دورات   if تُكتب ما بين قوسين زوايا [] ، خلاف? البرنامج السابق ،

وبدل (يساوي) = واحدة نضع = = اثنتين ، وكلمة  then  تكتب في ذات السطر ، ونهاية  if 

نجدها هناendif  ¡ ودورات  for تكتب  foreach   بدون  in  ¡ وتوضع محتويات foreach  بين

قوسين ، وبدل   case   يوجد هنا   switch ¡ والإشارة إلى البدائل تبدأ بكلمة set  ، وبدل

النقطة نكتب  source ، للعمل بفقرات برنامجية خلال الدورات . ولا يوجد كلمة  read  في هذا

البرنامج.

        ونأخذ بعين الاعتبار أن مثل هذه البرامج التي تخزن الملفات في أدلة إضافية لاتحذفها

تلقائياً . ومن الممكن أن تمتلئ أسطوانة التخزين يوماً ما ، ويسبب ذلك الإطاحة بالنظام ،

وهذا شيء يسبب عملاً كثيراً لمدير النظام لإعادة كل شيء إلى طبيعته ،  وخسارةَ معلومات قيمة ،

لذلك يجب حذف الملفات غير المستخدَمة بين حينٍ وآخرَ ، لتفادي هذه المصاعب.

 

        وجدير بالذكر أنَّ لكل غلاف ملفَ أوامر تلقائياً يعتمد عليه في حالة إدخال غلاف معين

للعمل به ، وتجد في هذا الملف كثيراً من الأوامر التلقائية التي تحتاجها . ومن أهم هذه

البرامج التلقائية الملف (.profile) التابع لغلاف Bourne-Shell  ، وملف (.cshrc) التابع

لغلاف C-Shell ،  وأيضاً الملف (.login)  ، وجميع هذه الملفات يجب أن تتواجد في الدليل الأم

(homdirectory)  لكي تستخدمها الأغلفة تلقائياً. وملف (.login) يُعمل به تلقائياً لدى الدخول

إلى النظام ، وملف (.logout) لدى الخروج منه ، وملف (.cshrc) يُعمل به لدى إدخال غلاف  C-

Shell . وفي هذه الملفات تجد معلومات عن المستخدِم ومواصفات النظام مثل : البدائل ، ونوعية

المطراف ، والأدلة التي يجب العمل بها ، والطريق إليها (path) إلخ....

 

        وهنا نقدم نسخة عن ملف (.cshrc) الخاص بغلافC-Shell 

set  history=50

set  ignoreeof

set  hostname="'hostname'"

set  term=vt100

set  prompt="$hostename $user  (\!): "

set  path = (/bin /usr/ucb /usr/bin /etc /usr/etc /usr/X11/bin /usr/gnu/bin .)

setenv  HOST "'hostname'" 

setenv  EXINIT  'set  ai  noto  aw  wa  noslow  opt'

stty  erase  '^H'

alias   h       'history  |  tail  -32'

alias   l       "ls  -lag \!*  |  more"

الشكل 22

        في بداية هذا الملف يتغير عدد الأوامر التي يجب تخزينها بواسطة  history ¡ ونغير

بواسطة set أي بديلة بالشكل الذي نريده ، مثل (ignoreeof  و hostname  و term  و prompt و

path ) .

الفصل الخامس

 

عمليات نظام التشغيل

 

1.5    النواة                         

2.5    العمليات

3.5    العمليات المساعدة    

4.5    حقوق العمليات

5.5    مراقبة العمليات

6.5    حذف وإيقاف العمليات

7.5    المعالجة الخلفية للعمليات     

8.5    صلاحيات ومرتبات العمليات

9.5    تحديد أوقات عمل العمليات الزمنية

الفصل الخامس

عمليات نظام التشغيل

 

1.5 . النواة

 

        إن علاقة أي مستخدِم لنظام بونكس تكون  مع الغلاف المعمول به فقط، ومستخدِم النظام

لايرى ولا يشعر بعمل نواة النظام إلا من خلال الغلاف المعمول به، لأن الغلاف  يقوم بالاتصال

بالنواة ، ويجعلها تقوم بالوظائف المرغوب إنجازُها. والنواة بحد ذاتها تكون ركيزة  نظام

التشغيل ، الذي يقوم بدوره  بمراقبة الأجهزة ، وإنجاز البرامج العامة، والعمليات الخفية ،

والاتصالات إلخ...

 

        والنواة هي برنامج أو بالأحرى ملف موجود في الدليل الرئيسي للنظام، واسمه  unix 

أو  vmunix ¡ وله من السعة ما بين 500 KB إلى 2 MB  في أسطوانة التخزين (Harddisk)  .

ولدى تشغيل الجهاز يقوم برنامج إدخال النظام الموجود في وحدة ذاكرة خاصة  (ROM) بقراءة

برامج النواة من أسطوانة التخزين وإدخالها إلى وحدة الذاكرة  (RAM)  ، لتبقى هناك طوال

وقت العمل لحين إطفاء الجهاز ، أي عزلِ الكهرباء عنه. وتقوم النواة بتفحص الأجهزة المرتبطة

، مثل : ارتباطِ الطابعةِ ، و مطراف الإدخال  (console)  ، ومترجم الذبذبة (modem) ،

والمطاريف الأخرى ، ولوحات المفاتيح للأحرف ، و الفأر (mouse) ، وشبكاتِ الاتصالِ (Network

بواسطة شريحة الارتباط (Adapter) ، ووحداتِ الذاكرة RAM الإضافية ، ووحداتِ التخزين النموذجية

floppydrives  و diskdrives و tapedrives 

 

        والنواة هي التي تقوم بأعمال النظام : مثل وظائف التفتيش . وتحرص على عدم القيام

بأعمال غير مسموح بها ، مثل أن يحاول أحد قراءة ملف معين ليس له صلاحية قراءتِه ، أو

استعمالِه ...إلخ.

 

2.5  العمليات

 

        إنَّ إدارة وحدة الذاكرة (RAM) ¡ وإدارة العمليات ، هي من أهم أعمال النواة . وهذه

العمليات تظهر إلى حيز الوجود لدى القيام بتشغيل أحد الأوامر أو البرامج . وفي هذه الحالة

تعطي النواة كل برنامج يكون في حيز التشغيل رقمَ عملية . وتقوم وحدة العمليات والمعالجة 

(processor)  بإنجاز هذه العمليات واحدة تلوَ أخرى ، بتقسيم الوقت ما بين هذه العمليات

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

وتقسيم وقت عمل وحدة العمليات والمعالجة، بأن يراقب العمليات التي تكون بحالة انتظار ،

ويدخلها إلى وحدة المعالجة ، وتُرتب هذه العملياتُ حسب أهميتها ، ودورِها ، والمرتبةِ التي

تكون مسجلة لها ، وتقوم بالطبع أولاً بإنجاز العمليات ذات أعلى المرتبات. ومن المستطاع تغير

مرتبات الإنجاز للعمليات أثناء العمل بها ، أو إيقافُها عن العمل ، أو حذفُها ، قبل الانتهاء

من الإنجاز. وبواسطة البرنامج nice الذي يغير المرتبة،  وبرنامج  kill  الذي يزيل العملية

، نستطيع التحكم في تلك العمليات.

 

        يعطي النظام لكل عملية رقم تعريف  PID (process identification)¡ وعمليات النواة

(وتسمى العمليات الأمُ) رقمها التعريفي يسمى PPID  (parent process identification)  ،

والعملية الأولى للنظام تسمى عمليةَ الإدراج أو التصفيف swapper-process ، ويعطى لها رقم PID

0 ، وهذه العملية تقوم بتشغيل العملية القيادية INIT-process  التي تحمل الرقم PID1 ،

وتقوم بتشغيل عمليات أخرى ضرورية .

 

        وتقوم عملية PID 0 بإدارة وحدة الذاكرة (RAM) المخصصة للعمليات. ولكل عملية بجانب

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

البرنامج ، وما سيتوصل إليه من عمليات حسابية أو كتابية ...إلخ ، لذلك يجب أن يكون هناك

سعة كافية من وحدة الذاكرة لتلك المعلومات، وإذا لم يكن هناك سعة كافية ، يقوم النظام

بتخصيص قليل من مساحة أُسطوانة التخزين ويستعملها وحدةً إضافية للذاكرة، ويضع فيها بعض

العمليات التي تكون في حالة انتظار لحين الحاجة إليها ، أو إلى أن يأتيها الدور الترتيبي

في الإنجاز ، وهذه هي وظيفة عملية الإدراج   swapper-process .

 

3.5  العمليات المساعدة

 

        وإكمالاً لما ذكرنا سابقا ، فإن عملية (PID 0)  تشغّلُ عملية (PID1 INIT-process) ¡

والتي بدورها تقوم بتشغيل عدة برامج أسماؤها تبدأ ب (/ete/rc.*  ) ¡ وهذه البرامج تكون

بطبيعتها برامجَ مساعِدة وتسمى  demon-process  ¡ وهي تقوم بوظائفَ خاصة بالنظام ، وتعمل

بمرتبة إنجاز عادية ، والمقصود من ذلك أنَّ من المستطاع وقفَها عن العمل وإعادةَ  تشغيلها ،

بعكس العمليات   INIT و  swapper  التي تعمل بمرتبة عالية ، وليس مستحسناً إيقافُها عن

العمل، لأنّ النظام ينهار حين ذلك.

 

        ومن وظائف هذه العمليات (demon-process) إدارةُ وتنظيمُ عمل الإخراج إلى الطابعة

(spool)  ¡ واستقبالُ البريد الإلكتروني عن طريق شبكة الاتصالات ، وإدارةُ الاتصال بحواسبَ بعيدةٍ

مرتبطةٍ بواسطة الشبكة.

        وعملية   INIT-process تشرف على دخول المستخدِمين إلى النظام بواسطة login ¡ بأن

تشغل في البداية برنامج getty ¡ الذي يرسل بدوره محث التسجيل والكلمة (login:) إلى الشاشة

، لكي يستطيع المستخدِم أن يدخل اسمه، وبعد إدخال هذا الاسم يشغل  getty برنامجَ  login¡

الذي يرسل محث إدخال كلمة المرور (password:) الى الشاشة، وبعد ذلك يشغل برنامجlogin 

الغلاف(Shell)  المسجل في ملفه ، لكي يستطيع المستخدِم التعامل مع النظام ، وتصبح هذه

الخطوة عملية متكاملة (porocess) .

 

        إن ما تقدم كان لمحةً تخطيطيةً لعملية INIT-process  (PID1)  في الدخول إلى النظام.

_

الشكل 23

 

        INIT-process هي العمليةُ الأمُ لجميع العمليات التي لم يعد لها مصدر أصلي . ونقصد

بذلك أنه لكل عملية مصدر أم ، وبفقدانه تصبحINIT  هي المصدر الأم لهذه العمليات. ومثال ذلك

: إدخال إحدى العمليات وإخراجها من النظام قبل إنجاز هذه العملية.

 

4.5  حقوق العمليات

 

        إن لكل عملية معلقة أوعاملة مالكَها وحقوقَها. ونقصد بذلك أنَّ عملية معينة لايُستطاع

إيقافُها أو حذفُها دون حيازة الحقوق كاملة لذلك . ومالك الملف يُسجَّـلُ رقمُه  UID (User

Identification)  ¡ ورقمُ مجموعته  GID  (Group Identification)   في العملية تلقائياً حين

تشغيلها . وحقوق العمليات تكون مرتبطة بواسطة الأرقام الفعالة EUID    (effective user

indentification)   التابعة للمستخدِم ، و  EGID التابعة للمجموعة (effetive group

identification)  . ولدى تشغيل أحد البرامج العادية تكون الأرقام UID  و  EUID وأيضاً GID و

EGID مطابقة لبعضها ، أي أن العملية تعمل بحقوق المستخدِم مُشَغِّلِها . وهناك العمليات ذات

الرقم (صفر) التي تكون مُلك المستخدِم root   مدير النظام . وهناك حالات أخرى تكون  EUID  و 

EGID  مختلفة ، وهنا نشير إلى ماذكرناه في جزء حقوق المستخدِمين بالنسبة ال s-Bit  ، أي أن

البرنامج يعمل بحقوق مالكه ، وليس بحقوق المستخدِم (أنظر جزء الحقوق) . ولذلك تعمل أي

عملية (process)  بحقوق المستخدِم ، أما البرنامج الذي تنجز أوامره فيعمل بحقوق مالكه.

والمعلومات عن المالك تكون مسجلة في  EUID وEGID  في هذه العملية... ومثال  ذلك  البرنامج

المعروف cat:

 

$ ls  -al  /bin/cat

-rwxr-xr-x  1   root   bin   29124    06  Feb  10.12  cat

 

        وهنا نرى أن البرنامج cat له مالكه root التابع للمجموعة bin . وكل مستخدِم يستطيع

استعمال هذا البرنامج (أنظر حرف x ) ويقرأه (أنظر حرف  r) ، أمّا مالكه فيستطيع أكثر من

ذلك (أنظر البداية r w x  ).

 

5.5  مراقبة العمليات

 

        بواسطة البرنامج ps   نستطيع إظهار العمليات القائمة على العمل في النظام ،

والعملياتِ الخاصة بالمستخدِم. ونحن لانستطيع ذكر جميع الإمكانات المتعلقة باستعمال البرنامج 

ps (اقرأ ال manual)، ولكن سنذكر أهم هذه الإمكانات. وهناك أيضاً اختلاف بين نظام  system V

ونظام BSD ، أما بالنسبة إلى نظام AIX فتجد الاحتمالين. وهاكَ شرحاً عن البرنامج ps في نظام 

BSD-UNIX.

 

        لدى إدخال الأمر ps دون إضافات ، تظهر العمليات الخاصة بالمستخدِم فقط ، وهي تحمل

رقم المستخدِم في UID :

 

 

$ ps

  PID TT     STAT TIME COMMAND

9375 p7     S              0:05  -csh

9416 p7     S              0:00  sleep 100

9417 p7     S              0:03  sh

9418 p7     R              0:00  ps

الشكل 24

 

        نرى - هنا - عملية استعمال الغلاف csh ¡ ثم عملية انتظار 100  sleep، وبعد ذلك

تشغيلَ غلاف   sh  Bourne ، ونرى أيضاً أرقام العمليات PID ، والمطرافَ التابع لهذه العملية

TT (p7) ، والحالةَ  STAT (status) ، والمدةَ الزمنية (TIME) .

 

        والمطراف المذكور في الأعلى p7  يكون في الواقع ttyp7 . والمطراف الرئيسي إذا ذُكر

يكون مختصراً بحروف (console) co ، وعمليات  demon-process  تُختصر برمز علامة الاستفهام ?

بدل المطراف .  وتعني R أن هذه العملية تُنجَزُ الآن بوحدة العمليات والمعالجة (processor)  ،

أو أنها في حالة انتظار . وهناك حروف  I¡D¡S  بدل R .

 

 

D =   انتظار من أجل معلومات تُقرأ من وحدة التخزين

S =  انتظار 20 ثانية أثناء العمل في البرامج

I  =   ولكن مدة الانتظار أكثر من 20 ثانية  s مثل

 

 

        وبحرف T تكون العملية موقفة مؤقتاً مثل حالة  Ctrl-Z (^Z). وهناك حالات لها حرفان ،

يكون الحرف الثاني منها فراغاً ، أو حرف W . وحرفW  يعني أن هذه العملية مرفوعة من وحدة

الذاكرة ، ومخزنة في swapped وحدة التخزين  لحين العمل بها. وفي أغلب الأحيان يكون الحرف

الأول لهذه الحالة (I) . وتُخزن هذه العمليات في وحدة التخزين لتوسيع المجال في وحدة

الذاكرة (RAM)  للعمليات المستعجلة.

 

        بواسطة الإضافة -a نستطيع رؤية جميع العمليات التي لها صلة بالمطراف:

 

$ ps  -a

  PID TT     STAT TIME COMMAND

7189 co     IW            0:00  -csh

7215 co     R              0:23  irc

8889 p0     IW            0:03  -sch

9401 p0     S              0:20  kermit

9375 p7     S              0:04  -sch

9416 p7     S              0:00  sleep 100

9417 p7     S              0:02  sh

9419 p7     S              0:05  ps  -a

الشكل 25

 

        ونرى - هنا - عملية تابعة إلى (console) المطراف الرئيسي المتوقف عن العمل ، وهو

في حالة انتظار لأنه لا أحد يعمل على هذا المطراف  co . وانتبه أيضاً إلى المطراف ttyp0  (

العملية الثالثة من الأعلى) وحالتِها IW  ¡ أي أن هذه العملية منزوعة من وحدة الذاكرة (RAM)

¡ ومدرجة في وحدة التخزين.

 

        بواسطة الإضافات -ax  نستطيع رؤية جميع العمليات القائمة:

 

$ ps  -ax

PID           TT     STAT TIME COMMAND

      0        ?      D              0:35  swapper

      1        ?      IW            0:07  \bin\init

      2        ?      D              0:16  pagedaemon

    53 ?      IW            0:05  portmap

    93 ?      IW            0:04  syslogd

  286 ?      IW            0:00  cron

  291         ?      IW            0:53  inetd

  294         ?      IW            0:01  \usr\lib\lpd

8888 ?      IW            0:28  in.rlogind

9326 ?      S               0:02  telnetd

7189 co      IW            0:00  -csh

7215 co     R              0:23  irc

8889 p0     IW            0:03  -csh

9401 p0     S               0:20  kermit

9375 p7     S               0:04  -csh

9416 p7     S               0:00  sleep 100

9417 p7     S               0:02  sh

9419 p7     R              0:00  ps  -a

$

الشكل 26

 

        وفي الشكل 26 نرى جميع العمليات في النظام ، بالإضافة إلى عمليات النواة مثل PID1 

¡ واسمها /sbin/init (العملية الثانية من الأعلى) ، وعملية swapper  العملية الأولى للنظام

(PID 0) .

 

        ولكي نحصِّل معلومات أكثر عن العمليات الخاصة بالمستخدِمين نضع الإضافة -u:

 

$ ps  -u

USER PID  %CPU %MEM SZ  RSS   TT   STAT   START   TIME   COMMAND

ziad   9375   0.0   0.0  204    0               p7   IW        22:01    0:04    -csh

ziad   9417   0.0   0.4  024 108               p7    S         22:05    0:02    sh

ziad   9423   0.0   0.4  184 424               p7    R 22:06    0:00    ps  -u

ziad   9416   0.0   0.0    16    0                p7   IW        22:05    0:05    sleep 100

$

الشكل 27

        وهنا نرى المستخدِم USER  ¡ ووقت بداية العمل للعملية START ¡ والنسبة المئوية من

وقت الوحدة المركزية %CPU ووقت وحدة الذاكرة %MEM.  وهذا يساعدنا على معرفة العمليات التي

تأخذ أوقاتاً???? طويلةً من وقت الحاسوب الثمين . وهناك SZ وRSS  التي تُظهر لنا كمية وحدة

الذاكرة (RAM) الضرورية للعمل . وإذا أردنا معلوماتٍ مفسرة أكثر نضع الإضافة  -l:

 

$ ps -l

        F   UID PID     PPID CP PRI NI SZ RSS WCHAN STAT TT TIME  COMMAND

20488200  207 9375  9374  0   15    0 204   0  kernelma  IW   p7  0:04   -csh

20008200  207  9416  9375  5  15   0 204    0  kernelma  IW    p7  0:04   sleep 100

20008001  207  9417  9375  0    5   0 204 108  child          IW    p7  0:04   sh 

20000001  207  9422  9417 17 29  0 204 436                     IW    p7  0:04   ps  -l

الشكل 28

 

         نرى - هنا - بجانب PID الرقمPPID  وهو رقمُ الوحدة الأم ،  والعددَ الذي يُفصح عن

مرتبة كل عملية ، أي أنَّ صُغر العدد يعني أولوية أقوى ، والمالكُ يظهر هنا كرقم (UID) .

 

         نشرح - فيما يلي - برنامج ps من خلال النظام System V ¡ والبرنامجُ ps يشبه ما

اطلعنا عليه في الصفحات السابقة، من حيث المبدأ، ولكن هناك بعض التغييرات البسيطة:

 

$ ps

   PID TTY           TIME COMMAND

1479 ttyp4          0:00  sleep

1470 ttyp4          0:01  csh

1483 ttyp4          0:00  ps

1480 ttyp4          0:00  sh

$

الشكل 29

        في الشكل 29 يظهر المطراف باسمه الكامل ، ولا تظهر الحالة (status).

 

        وإذا أردنا أن نرى جميع العمليات نستعمل الإضافة-e  ¡ والنتيجة تشبه إلى حد بعيد

ماذكرناه عن نظام BSD بإضافة  -axلبرنامج ps:

 

$ ps  -e

   PID TTY           TIME COMMAND

      0        ?              0:02  sched 

      1        ?              2:07  init

      2        ?              3:12  vhand

      3        ?              0:39  bdflush

    84 ?              0:04  portmap

    39 ?              0:15  syslogd

  185 ?              1:45  cron

  117         ?              0:06  inetd

  175         ?              0:00  lpd

  166 ?              0:05  sendmail

1469 ttyq4          0:01  telnetd

1420 console       0:03  csh

1421 console       0:10  vi

1470 ttyq4           0:04  csh

1479 ttyq4           0:00  sleep

1480 ttyq4           0:02  sh

1484 ttyq4           0:00  ps

$_

 

الشكل 30

 

        في الشكل 30 نرى جميع العمليات العاملة حالياً ، بالإضافة إلى عملية  sched ¡ التي

تمثل نواة النظام ، والتي تدير العمليات . وهناك الإضافة -f  لرؤية مزيد من المعلومات :

 

$ ps  -f

UID   PID   PPID C  STIME       TTY     TIME   COMMAND

ziad 1479  1470  0   09:50:41    ttyq4    0:00   sleep 100

ziad 1470  1469  0   09:15:09    ttyq4    0:04   -csh

ziad 1485  1480 13  09:05:12    ttyq4    0:00   ps  -f

ziad 1480  1470  0   09:12:20    ttyq4    0:02   sh

$

الشكل 31

        وفي الشكل 31 تظهر معلومات مالك العملية  UID  ¡ ورقم العملية PID ¡ والعملية الأم

PPID  ¡ ووقت بدء العمل STIME ¡ واسم العملية مع الإضافات COMMAND ¡ والمطاريف TTY .

وبالإضافة -l:

 

$ ps -l

 F   S UID   PID  PPID  C   PRI NI  P SZ:RSS WCHAN    TTY  TIME COMD

30  S  207  1479 1470  0    39  20  *  10:03                     ttyq4 0:00 sleep

30  S  207  1470 1469  0    39  20  *  52:27     801099d8  ttyq4 0:00 csh

30  R  207  1486 1480  0    66  20  0  36:35                    ttyq4 0:00 ps

30  S  207  1480 1470  0    30  20  *  23:24     80101428 ttyq4  0:00 sh

الشكل 32

        في الشكل 32 نرى حالة العملية S ¡ وهذه حالةُ انتظار ، وO  العملية في حالة عمل ،

وR  انتظار مؤقت ، و T العملية موقفة. وبدل اسم المستخدِم UID  تجد الرقم والمرتبة أسفلPRI

 ، والرقمُ الأصغرُ يكون هنا أيضاً ذا مرتبة أعلى.

6.5 حذف وإيقاف العمليات

 

        هناك آلية خاصة mechanism تعمل بها العمليات مع بعضها بعضا . وإحدى هذه الآليات

تكونُ إشارةً   signal ¡ تُرسَـل إلى العمليات من النواة ، أو من إحدى العمليات الأخرى. وهذه

الإشارة هي أمر إلى العملية المعنية بالتوقف عن العمل الحالي والقيام بوظائف أُخرى. والنظام

يملك حوالي 40 إشارة لها وظائف متعددة. وهذه الإشارات متعارف عليها من خلال الرقم الذي

تحمله . وكثير منها إعلام عن أخطاء. وهذا الإعلام بالخطأ يأتي في أغلب الأحيان من نواة النظام

، في حالة محاولة إحدى البرامج كتابةَ المعلومات في المنطقة المحظورة من وحدة الذاكرة ،

وعند ذلك يُجبر النظام على إيقاف العملية بواسطة إرسال إشارة signal  إليها ، وهناك إشارة

تُرسَـل عندما يحاول أحد البرامج أن يطرح الصفر من عدد معين. وهناك إشارات تُرسَـل إلى

العمليات  حال انقطاع الكهرباء، لكي تستطيع هذه بدورها أن تُنهي عملها بحالة معقولة، وخلاف

ذلك يمكن خسارة كثير من المعلومات. وهناك إشارات تُرسَـل في حالة ضغط المفاتيح Ctrl-C أو

Del أو Ctrl-Z إلخ...

 

        في بعض الحالات يكون من الضروري إزالة إحدى العمليات المعلقة. وفي هذه الحالة

نستطيع استعمال الأمر kill الذي يزيل العمليات من النظام نهائياً. واستعمال  kill يكون

بإدخال الأمر ورقمِ العملية خلفه كإضافة . ورقمُ العملية نستطيع إظهاره بواسطة البرنامج  ps 

كما ذكرنا سابقاُ. وهاك مثلاً لإزالة إحدى العمليات :

 

$ sleep 100  &

[1] 1479

 

$ ps

   PID TTY           TIME COMMAND

1470 ttyq4          0:01  csh

1483 ttyq4          0:00  ps

1479 ttyq4          0:00  sleep

$

$ kill 1479

[1]    Terminated           sleep 100

$ ps

   PID TTY           TIME COMMAND

1470 ttyq4          0:01  csh

1483 ttyq4          0:00  ps

$

الشكل 33

 

        في الشكل 33 أدخلنا عملية للعمل الخلفي بواسطة & ورقمها 1479 ، وبواسطة ps

أظهرناها على الشاشة. وبواسطة kill أُزيلت العملية من النظام. وهكذا أَرسَـل  kill الإشارة

رقم 15 لإزالة العملية. ومن المستطاع حذف كثير من العمليات سوياً بإدخال الأرقام واحداً تلو

آخرَ  بعد الأمر kill  منفصلة بفراغ. والإشارة  signal رقم 15 يمكن تجاهلها من قبل النظام

إذا كان هناك أمر بالتجاهل ، ولكنَّ من المستطاع بالرغم من الأمر بالتجاهل  إزالةَ العملية

بإضافة -9 ، أي أن نُدخل رقم الإشارة9  للحذف  بعد الأمر kill ، ورقمَ العملية.

 

        وإليكَ مثلاً على ذلك :

 

$ runforever   &

[1] 2312

$_

$_

$ ps

   PID TTY           TIME COMMAND

2312 ttyq4          0:00  runforever

1470 ttyq4          0:01  csh

1483 ttyq4          0:00  ps

$ kill 2312

$ ps

   PID TTY           TIME COMMAND

2312 ttyq4          0:00  runfoever

1470 ttyq4          0:01  csh

1483 ttyq4          0:00  ps

$ kill  -9  2312

[1]    Terminated           runforever

$_

 

الشكل 34

 

        وجدير بالذكر أن العمليات غير قابلة للإزالة إلاّ من قبل مالكها ، ولكنَّ مدير النظام

root (superuser) يستطيع إزالة وإيقاف العمليات جميعها .

 

7.5 المعالجة الخلفية للعمليات

 

        تبين لنا - فيما سبق - من معلومات ، أنَّ لكل وظيفة يقوم بها الحاسوب عمليةً ظاهرةً

أو عمليةً خلفيةً (أي من وراء ستار) . والعمليات الظاهرة هي عمليات تحقق الإنجازاتِ التي

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

قبل أن يُنجـِز الحاسوب  المهمة السابقة ، ونحن نكون - أثناء ذلك - في حالة انتظار. بعكس

الوظائف أو المعالجة الخلفية للعمليات ، التي يكون إدخالها بالطريقة المُتبعة للأوامر ،

بالإضافة إلى رمز &  في آخر سطر الأوامر ، وذلك بعد كتابة الأمر والإضافات .

 

        وهذه المعالجة الخلفية للعمليات (كمراقبة البريد الإلكتروني، والعلاقةِ مع المطاريف

، و القيامِ بوظائف الطباعة الوسيطة spool  ¡ و مراقبةِ مترجم الذبذبة modem  ...إلخ. هي

وظائفُ يقوم الحاسوب بإنجازها باطنياً بعد إدخالها.  ويستطيع المستخدِم مواصلة عمله بعد ذلك

دون انتظار الإنجاز.

 

        ويقوم النظام بإدارة  العمليات الخلفية بواسطة ترقيمها ترقيماً مزدوجاً ، رقم

النظام   PID ¡ والرقم الوظيفي(Job-No.) ¡ ومن المستحسن استعمال الرقم الوظيفي الذي يبدأ

برقم 1  ، بعد تشغيل النظام ، لأنَّ من الصعب حفظَ أرقام العمليات النظامية. وإذا أردنا

استعمال الرقم الوظيفي فيجب إدخال الأوامر مضافاً إليها علامة %.

 

        ونستطيع إظهار هذه الأرقام الوظيفية باستعمال الأمر jobs ¡ ونستطيع تحويل العملية

الخلفية إلى  عملية ظاهرة ، ثم إعادتـَها إلى الخلف لتصبح خلفية ، وذلك باستعمال % مضافاً

إليها الرقم الوظيفي. ونجذب العملية من الخلف إلى الأمام باستعمال & بعد % والرقمِ الوظيفي

. وإذا كانت هناك عملية ظاهرة أمامية وأوقفناها باستعمالCtrl-Z  ¡ فإننا نستطيع جعلها

تتابع العمل باستعمال الأمر   bg لإرسالها إلى الخلف للمتابعة هناك . وباستعمال الأمر    fg

نجذب هذه العملية إلى الأمام لتصبح عملية ظاهرة ، وذلك بعد استعمال (Ctrl-Z) مباشرة .

وإليك بعض الأمثلة على ذلك :

 

 

 

% sleep 1000  &

[ 1 ] 120903

% vi  text    

.....................          ندخل إلى برنامج الكتابة

 

(Ctrl -Z)                      vi... ثم نوقف العمل ب

% jobs

[1]    - Running                   sleep  1000

[2]    + Suspended         vi  tetx

% find  \  -name  sort  -print  >  result

(Ctrl -Z)

% bg                 إلى العمل في الخلف  findنعيد البرنامج

[1]    Running                      sleep  1000

[2]    - Suspended         vi  tetx

[3]    +Suspended          find  \  -name  sort  -print

% jobs

[1]    -  Running                  sleep  1000

[2]    + Suspended         vi  tetx

[3]       Suspended                find  \  -name  sort  -print

% %2                                إلى العمل  vi نعيد البرنامج

الشكل 35

         أولاً :

        أدخلنا sleep للعمل في الخلف 1000 ثانية ورقمَه الوظيفي [1] ورقمـَه النظامي 120903

الذي لن نحتاجه بعد ذلك،  لأننا سنستعمل الرقم الوظيفي .

 

        ثانياً :

        أدخلنا البرنامج  vi وهو محرر (برنامج معالجة كلمات لكتابة البرامج والنشرات

ومعلومات أُخرى) ، وبعده أدخلنا اسم ملف text . وبعد إدخاله تذكرنا أننا نريد البحث عن ملف

معين بواسطة البرنامج find   ¡ وفي هذه الحالة أوقفنا العمل بالبرنامج  vi بواسطة Ctrl -Z

 . وبعد ذلك أظهرنا العمليات بواسطة  jobs ¡ وأدخلنا الأمر  find وأوقفناه أيضاً بواسطة

Ctrl-Z ¡ ثم أعدنا عمل find في الخلف . ثم أظهرنا العمليات بواسطة  jobs مرةً أُخرى. ونعود

بواسطة 2%  للعمل بالعملية رقم 2 ، وهي برنامجvi  ونتابع العمل.

 

8.5  صلاحيات ومرتبات العمليات

 

        هناك البرنامج /usr/bin/nice والأمر nice لتغيير مرتبة عمل العمليات،

و/usr/bin/nice  برنامج مستقل، والأمر nice يكون مزوداً به غلاف العمل.

 

        إنَّ المرتبة - كما ذكرنا في السابق - هي أولوية العمل لدى وحدة العمليات والمعالجة

والتحكم ، وكلما كانت المرتبة أعلى كان إنجاز البرنامج أسرعَ في العمل. ودرجات الأولوية أو

المَرتَبة تكون عادة مابين 0 إلى 19. والصفر يعني مرتبة عادية standard ¡ وزيادة العدد يقلل

الأولوية. أما بالنسبة إلى مدير النظام ، فمن حقه تصعيد الأولوية من صفر إلى تحت الصفر  (

إلى ناقص 20- ).

 

        الاختلاف النحوي للأمر  nice والبرنامج  /usr/bin/nice يكون على النحو التالي:

 

$ /usr/bin/nice  -12 cc -c *.c   &

[1] 1933

 

        أدخلنا برنامجcc  للعمل بأولوية 12 بواسطة البرنامج nice ، وبرنامج  cc  هو مترجم

البرامج للغة البرمجة C ، وهنا نترجم compiling الملفات التي تنتهي بحرف  .c   ووضعنا *

في المقدمة بدل الأسماء ، وأنهينا الإدخال ب & للعمل الخلفي . ويظهر رقم العملية الوظيفي

بين زاويتين [ ] والرقم النظامي بعد ذلك.

 

% nice   t12   cc   -c   *.c   &

 

         أدخلنا الأمر nice التابع لغلاف سي C-Shell  ونستعمل (  (t بدل (-) قبل مرتبة

الأولوية.

 

9.5  تحديد أوقات عمل العمليات الزمنية

 

        بواسطة الأمر at نستطيع الإيعاز إلى أحد البرامج (shell-script) الخاصة بالغلاف

بالعمل في زمن معين في المستقبل ، نختاره باليوم والساعة والدقيقة . وهذه الحالات تكون

مفيدة لإرسال معلومات عبر الشبكة الدولية أثناء الليل ، لقلة تكاليف الخطوط في هذا الوقت ،

دون أن يكون أحد موجوداً لمراقبة الجهاز ، أو الدخولِ إلى النظام ، بشرط أن يظل الجهاز

الرئيسي عاملاً ، ليلَ نهارَ ، دون إطفاءِ أو فصلِ الكهرباء عنه. وإدخالُ الوقت يكون حسبما يفهمه

النظام ، والذي يكون عادةً في النظام الأمريكي من اليسار إلى اليمين:

 

         الساعة ونقطة مزدوجة ، والدقائق ، والشهر بالاسم  واليوم بالرقم ،  بهذا الشكل:

(19:30 Jan 15 )  الساعة السابعة والنصف مساء يوم 15 من شهر كانون الثاني.

 

        ونستطيع استعمال الأوقات المسماة باللغة الإنكليزية مثل :

noon                          الساعة 12  ظهراً

midnight                      الساعة 12 منتصف الليل

now                           الآن

  Jan Feb....Dez              الأشهر (أول ثلاثة أحرف)

 today                        اليوم

 tomorow                     غداً

 days أو day                 اليوم أو الأيام

 week  أو weeks     الأسبوع أو الأسابيع

 hour أو hours               الساعة أو الساعات

 minute أوminutes  الدقيقة أو الدقائق

 month أو months    الشهر أو الأشهر

  year أو years              العام أو الأعوام

 

ونستطيع بواسطة  +  إضافة الأيام والساعات مثل :

 

now+12               اثنتا عشرةَ ساعةً من الآن

  now+2days تعني يومين بعد الآن

 noon Friday         الجمعة القادمة الساعة 12 ظهراً

 

 

        وإليك بعض الأمثلة :

 

at      9:30 Jan 15         1/15 ابدأ العمل الساعة  9 والنصف يوم

at      now + 5 days         ابدأ العمل بعد 5 أيام من الآن 

at      nooh Friday          ابدأ العمل الجمعة القادمة الساعة 12

 

$ at 3:15 Friday

startprog                             startprog  هذا برنامج

.

.

Ctrl-D                        بضغط هذه المفاتيحscript إنهاءإدخال ال

warning: commands will be executed using /bin/sh

job 693451000.a at Fri Jan 30 03:15:00 1993

$

 

        هنا نرى أن العملية ستبدأ  يوم الجمعة القادم في الساعة الثالثة والربع صباحاً

بتشغيل البرنامجstartprog  . ونحن نستطيع إدخال أكثر من برنامج للإنجاز لاحقاً قبل ضغط

المفاتيح Ctrl -D لإنهاء الإدخال ، ولتعمل البرامج في الوقت المحدد لها . ويُعلِمنا النظام

بعد Ctrl -D بتلقيه ما أُدخل إليه ، ويعطينا رقم الوظيفة والتي نستطيع  إيقافها عند الحاجة

.

 

        وبواسطة إدخال الإضافة  at  -l  نستطيع رؤية العمليات التي تكون في حالة انتظار

حُـلول الوقت المعين للإنجاز . هذا ونستطيع وقف عمل أي عملية  باستعمال :

 

$ at -r   process-No  process-No = رقم العملية

الفصل السادس

 

محررالنصوص

 

1.6    البرنامج الكتابي vi    

2.6    عملية إدخال المعلومات والأوامر

الفصل السادس

محررالنصوص

 

        إن أي مبرمج أو مستخدِم لجهاز الحاسوب يكون بحاجة إلى محرر لكتابة البرامج ، أو

الرسائل ، أو الملاحظات لطباعتها أو الاحتفاظ بها، والمحرر هذا يكون برنامجَ_INDEX_ _معالجة

الكلمات word processor ¡ ونستطيع بواسطته كتابة وتخزين ماكتبناه في ملفات ، وتغيير

ماكتبناه ، أو حذفَ بعضه ، أو نقلَ أحد محتوياته ...إلخ...

 

        وهناك كثيرٌ من برامج الكتابة والتنقيح ، وبرامجِ معالجة الكلمات ، وتختلف هذه عن

بعضها بعضاً في القدرة . وأغلب برامج الكتابة التابعة لنظام التشغيل تكون غير مؤهلة لترتيب

الكلمات بالطريقة المتقدمة ، مثل البرنامجMS-Word  مثلا.

 

والنظام يونيكس لديه برنامج كتابة (محرر) يسمى vi  ¡ ويصلح لكتابة البرامج والرسائل

البسيطة والمعلومات ...إلخ .

 

        ونحن الآن بصدد تقديم لمحة عن استعمال هذا البرنامج، دون التطرق إلى تقديم شرح عن

البرامج ed و ex و elvis ¡ وهي أيضاً برامج كتابة تابعة إلى النظام يونيكس . و يحتوي نظام

يونيكس على نسخة من برامج الكتابة أو أكثر. وأغلب هذه البرامج مثل ed و ex  تكون برامجَ

سطريةً ، أي أن عملها يكون محدوداً بالسطر الواحد ، أما برنامج  vi  فهو برنامج شاشة ، أي

أن العمل يكون بمحتوى شاشة كاملة ، أي 25 سطراً. وهكذا يعمل برنامج elvis  أيضاً.

 

        ملاحظة :

         المعتادون على العمل بواسطة برامج معالجة الكلمات من خلال الحاسوب الشخصي PC

يجدون مصاعبَ ضئيلةً للتعود على الكتابة بواسطة البرنامج VI.

 

1.6  البرنامج الكتابي vi

 

        قبل البدء بالعمل يجب التأكد من قابلية عمل المطراف مع vi ¡ وذلك بالتأكد من وجود

البديلة TERM في شكلها الصحيح (انظر جزء المطراف) قبل البداية بالعمل:

 

        نستطيع العمل المباشر بإدخال الأمر vi ملحقاً باسم الملف الذي نريد كتابته ، أو

الملفِ المراد تغييره:

 

$ vi filename

 

 

vi filename           يفتح filename عند النهاية أو يعمل ملفاً جديداً

vi /text filename      يفتح filename عند السطرحيث توجد (كلمة) text

vi n filename  يفتح filename عند رقم السطر كذا (n)

 

        وإذا كان الملف موجوداً فيظهر vi هكذا :

 

_

 

        وتظهر هنا السطور غيرُ المكتوبة مسبوقةً بعلامة ~ للإشارة إلى  أنها غير مستخدَمة. وفي

أسفل الشاشة يظهر اسم الملف. وفي حالة عدم وجود الملف ، يعمل vi ملفاً جديداً وتظهر العبارة

[New file]

 

2.6 عملية إدخال المعلومات والأوامر

 

        برنامج vi لديه حالتان للعمل: حالة إدخال الأوامر ، وحالة إدخال المعلومات ،  وهذه

الأخيرة هي الحالة التي نحصل عليها بعد ظهور شاشة البرنامج vi مباشرة . وللخروج من حالة

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

من حالة إدخال الأوامر:

 

 

        طرق الخروج الدارجة من حالة إدخال الأوامر هي إدخال الأحرف a¡i¡o وحرفِ O الكبير.

 

 a =   append        إضافة

 i =    insert  إضافة للأحرف

 o =open              سطر جديد

 

        وعمل هذه الأحرف في البرنامج vi يكون كالتالي:

 

        إذا أردنا إدخال كلمة إلى الملف ونحن موجودون في حالة الأوامر ، نضغط المفتاح a

ونكتب ما نريد ، وبعد ذلك نعود إلى حالة الأوامر بالمفتاح Esc.

 

        ولتوجيه الوامض نستعمل مفاتيح الأسهم المتجهة إلى الأعلى والأسفل ، وإلى اليسار

واليمين (_SYMBOL 174 \f "Symbol"_ _SYMBOL 175 \f "Symbol"_ _SYMBOL 173 \f "Symbol"_

_SYMBOL 172 \f "Symbol"_ ) . وفي حالة عدم وجود هذه المفاتيح نستطيع استعمال الأحرف h

للاتجاه إلى اليسار ، و i  للاتجاه إلى اليمين ، و k  للأعلى ، و  j  إلى الأسفل .

 

        ولتغيير ماكتبناه على الشاشة نستعمل المفتاح BackSpace لحذف الأحرف من يسار الوامض

، ولحذف السطر Ctrl -U ¡ ولحذف الكلمة من اليسار Ctrl -W  ¡ ولقلب الصفحات إلى الأمام

نستعمل Ctrl -F ¡ وإلى الخلف Ctrl -B ، وللخروج من vi وتخزين الملف نُدخل ZZ . ومن

المستطاع استعمال :q! للخروج من البرنامج دون تخزين الملف بعد تغييره ، أو للخروج في حالة

عُدولنا عن تخزين الملف .

 

         أما الوظائف الأخرى فنقدم هنا لائحة بها ، وهي تُستَعمَل من خلال حالة الأوامر :

 

        التحرك في الملف:

 

 b             ينقل الوامض إلى الخلف مقدراً كلمة واحدة

 Ctrl-B        يدرج إلى الخلف شاشة كاملة

 Ctrl-D        يدرج نزولا نصف شاشة

 Ctrl-E        يدرج الشاشة صعوداً سطرا واحدا

 Ctrl-F        يدرج إلى الأمام شاشة كاملة

 Ctrl-L Ctrl-R ينشط الشاشة حاذفاً المحارف الخاطئة

 Ctrl-U        يدرج إلى الأعلى نصف شاشة

 Ctrl-Y        يدرج الشاشة نزولا سطرا واحداً

 e             ينقل الوامض إلى نهاية الكلمة الحالية

 h             ينقل الوامض إلى اليسار فسحة واحدة

 H             ينقل الوامض إلى أعلى الشاشة(High)

 j              ينقل الشاشة نزولاً سطراً واحداً

 k             ينقل الوامض صعوداً سطراً واحداً

 l              ينقل الوامض فسحة واحدة إلى اليمين

 L             ينقل الوامض إلى أسفل الشاشة (low))

 M            ينقل الوامض إلى وسط الشاشة((Middle)

 n G           ينقل الوامض إلى السطر رقم n

 w             ينقل الوامض إلى الأمام كلمة واحدة

 0(صفر)      ينقل الوامض إلى بداية السطر

 $             ينقل الوامض إلى نهاية السطر

 "              ينقل الوامض إلى الوضعية السابقة

 a             يلحق نصاً عند محرف واحد إلى يمين الوامض

 A             يلحق نصاً عند نهاية السطر

 cc            يتيح تغيير سطرٍ والمتابعةَ في نمط الإقحام

 cw            يتيح تغيير كلمةٍ والمتابعةَ في نمط الإقحام

 c(             يتيح تغيير بقية الجملة

 c{            يتيح تغيير بقية الفقرة

 i              يولج نصاً عند مكان الوامض

 I              يولج نصاً عند بداية السطر

 o             يفتح سطراً لإقحام نص تحت الوامض

 O             يفتح سطراً لإقحام نص فوق الوامض

 r              يتيح استبدال أحد المحارف والعودةَ إلى نمط الهروب

 add           a يحذف السطر ويضعه في السلة

 "ap           الأسطر المنزوعة أو المحذوفة والموجودة بالسلة

 "aP           يضع الأسطر المنزوعة أو المحذوفةَ والموجودة في السلة

 a y y  ينزع سطراً ويضعه في السلة a

 dd            يحذف سطراً كاملاً

 D             يحذف بقية السطر الحالي

 d w           يحذف كلمة word = w

 J             يصل ما بين سطرين قصيرين في سطر واحد طويل

 m a           يعلم a للنزع أو الحذف

 p             يضع النص المنزوع أو المحذوف بعد الوامض

 P             يضع النص المنزوع أو المحذوف قبل الوامض

 u             يبطل مفعول أمر لتغيير النص

 U             يبطل مفعول جميع التغييرات على السطرالحالي

 x             يحذف حرفاً

 y w           ينزع كلمة (ينسخها إلى المخزن الانتقالي)

 y y           ينزع سطراً

 .(نقطة)       يكرر الأمر السابق

 "lp            يسترجع الحذف السابق

 

        البحث عن النص :

 

 text/         يبحث باتجاه الأمام في الملف عن النص text

 ?text         يبحث باتجاه الخلف في الملف عن النص text

 n                     يتابع البحث في ذات الاتجاه

 N                     يبحث في الاتجاه المعاكس

 

        ضبط القياسات بواسطة أوامر النقطتين التابعة إلى ex :

 

 :set ai        يؤدي إلى تفعيل الحذف التلقائي للفقرات (autoindent                        

        يكرر الحذف)

 :set all       يسرد جميع الإضافات التي تستطيع ضبطها

 :set nu       يضبط الأرقام (أرقام الأسطر)

 :set noic     يجعل عمليات البحث حساسة للتفريق بين الأحرف الكبيرة                    

والصغيرة

 :set wm=n يضبط الهامش عند رقم n

        تخزين النص ، وتحريكه ، وحذفه بواسطة أوامرِ النقطتين المطابقةِ لأوامر البرنامج ex

:

 

 :e filename          ينقح (edit)

 :e                            ينقح الملف السابق

 :n                            n ينقل الوامض إلى رقم السطر رقم

 :x  y m z               z y ينقل الأسطر ما بين

 :x  y co z             ينسخ الأسطر ما بين

 :x  y d                       يحذف الأسطر من

 :x y w filename              يكتب الأسطر ما بين

 :x  y w >> filename يضيف الأسطر ما بين

 :g ?                         يجعل حالات التواجد نصاً جديداً

 :! q                          يخرج من المحرر ويلغي جميع التغييرات

 :w                            يخزن التغييراتِ الأخيرة

 :% S/oldtext / newtext/g   oldtextيبحث عن النص القديم

                               newtext ويستبدل به نصاً جديداً

الفصل السابع

 

الطباعة

 

 

1.7    الطباعة بواسطة System V

2.7    الطباعة بواسطة BSD-Unix  

الفصل السابع

الطباعة

 

        للطباعة المباشرة نستعمل :

 

$ cat filename > /dev/lp0

 

        أي أننا نرسل الملف filename إلى الطابعة /dev/lp0.

 

        واستعمال الطابعة - كما ورد في الأعلى - يسبب مشكلات في حالة إرسال ملفات كثيرة من

مستخدِمين كثيرين باتجاه طابعة واحدة ، دون إتفاق زمني بينهم . ولتفادي ذلك يُستَعمَل نظام 

الطباعة الوسيطة SPOOL (simultaneous peripheral operations on-line) ، الذي يُمَكِنُنا من

إرسال طلبات الطباعة إليه ، والتي تصبح في حالة انتظار في الصف  (queue) ، ويقوم spool

بدوره بإخراج الطباعة على شكل عمليات متتابعة زمنياً ، واحدةً تلو أُخرى .

 

        وهناك نوعان من نظام الطباعة ، أحدهما تابع لنظام system V واسمه lpsched ¡ والآخر

تابع لنظام  BSD-Unix واسمه lpd ¡ ولهذين النظامين برامج مختلفة لإدارة الطباعة الوسيطة.

1.7 الطباعة في النظام System V

 

        قبل الشروع في طباعة أحد الملفات نتأكد من وجود الطابعات في النظام بواسطة الأمر:

$ lpstat -s

system default destination:matrix

device for matrix : /dev/lp0

device for laser   : /dev/lp1

device for plotter: /dev/lp2

 

        ويخبرنا البرنامج lpstat - هنا - بالطابعة التي تذهب إليها الملفات في العادة

(system-printer) ، أي إلى الطابعة matrix ، وذلك في حالة عدم توجيه الملف إلى طابعة

معينة مثل laser أو plotter.

 

        الطابعات المرتبطة في هذا النظام :

 

matrix    طابعة النقاط /dev/lp0

laser     طابعة الليزر /dev/lp1

plotter   المُخَطِط الراسم /dev/lp2

 

        وبواسطة البرنامج lp نستطيع إرسال الملفات إلى spool:

 

$ lp filename

request id is matrix-75 1file

 

        والآن يُطبع الملف المعني على الطابعة matrix .

         ونستطيع إيقاف الطباعة:

 

$ cancel matrix-75

request "matrix-75" cancelled

 

        وهنا أدخلنا الأمر cancel واسم ورقم العملية ، لإيقافها في حال وجودها في صف

الانتظار (queue).

 

        وبواسطة الإضافة -d نستطيع إرسال الملف إلى طابعة أخرى:

 

$ lp  -dlaser   filename

 

ويوضع اسم الملف مباشرة بعد -d ¡ لكي يُطبع الملف بواسطة طابعة الليزر.

 

        وأثناء طباعة أحد الملفات يكون - أحياناً - من الضروري مواصلة العمل في ذلك الملف

، أو تغيير محتواه ، عند ذلك يجب استعمال الإضافة -c (وتعني copy) ¡  كي تُنسَخ نسخةٌ إضافية

من هذا الملف ، وتُرسل إلى ملف الطباعة الوسيطة (spoolfile) ¡ لإدراجها هناك في الصف ،

ويتحررُ الملف الأصلي من قبضة ال spool.

 

        وإذا أردنا طباعة عدة نُسخ من أحد الملفات ، نُضيف عدد النُسخ إلى الإضافة (n) هكذا 

-n3 .

 

        بعد الانتهاء من طباعة أحد الملفات ، لايعلمنا البرنامج بانتهاء وظيفة الطباعة .

وللحصول على خبر message من النظام بانتهاء الطباعة ، نضيف  -m (mail) إلى سطر أمر

الطباعة لدى استعمال lp . وبذلك نحصل على إعلام بانتهاء وظيفة الطباعة .

 

$ lpstat

matrix-75     ziad    prioity  0  Mar 13  13:20 on matrix

                filename                              3210

 

        وهذا يعلمنا بأن filename يُطبع الآن بطابعة الماتركس ، و حجمه 3210 أحرف .

2.7 الطباعة بواسطة BSD-Unix

 

        الأوامر التي تختلف هنا هي:  lpr ¡ وهي تستخدم بدل lp ¡ والإضافات مثل -d تصبح هنا

-p ¡ وبدل -n نستعمل -# لطبع عدة نُسخ من الملف ، وباقي الإضافات تُستخدم كما في البرنامج lp

¡ وبديل cancel يكون lprm لإيقاف عمليات الطباعة ، وبالطبع نحتاج إلى رقم هذه العملية ،

الذي نستطيع معرفته بواسطة lpq :

 

$ lpq -plaser                 laser إظهار عمليات الطابعة

laser is redy and printing

Rank  Owner Job   Files    TotalSize

active ziad           3      letter.txt     49150 bytes

$ lprm -plaser 3                     يوقف العملية و يحذفها

الفصل الثامن

 

أوامر النظام المتطورة

 

 

1.8    أوامر المقارنة                                        

2.8    تجزئة الملفات                                        

3.8    تصنيف الملفات                                              

4.8    اقتطاع المعلومات                                            

5.8    تبديل الأحرف داخل الملف                            

6.8    تركيب الأوامر                                        

7.8    البحث عن معلومات معينة                            

8.8    ملفات الأرشيف                                       

9.8    تكثيف الملفات                                        

10.8 برامجُ أخرى مساعدة                                 

الفصل الثامن

أوامر النظام المتطورة

 

        في هذا الجزء نشرح الأوامر المتطورة ، والتي تكون برامجَ إضافيةً للنظام ، مثلَ

برنامج المقارنة ، وبرنامج تقسيم محتوى الملفات وترتيبها ...إلخ.

 

1.8 أوامر المقارنة

 

        يوجد برنامجان للمقارنة بين الملفات : أولاهما cmp  (compare)  وهو يقارن ملفين ،

ويُفصح عن حالة الاختلاف إذا ما وُجد بينهما ، و الثاني هو البرنامج  diff  الذي يُظهر الاختلاف

بالتفصيل.

 

        ولتوضيح عمل هذه البرامج ننشىء أولا ملف بيانات ، ونسميه adr ، ونضع داخله عدة

أسماء لأشخاص : ونقوم بكتابة الاسم الأول ، واسم العائلة ، والعنوان ، وتاريخِ ومكانِ الميلاد ،

ونفصل المجالات بواسطة النقاط العمودية (:) ، كما هو في الشكل التالي:

 

Susanne:Krieger:Fischerweg 8:Jena:1:5:67

Udo:Meier:Dorfstr. 12:Reutlingen:2:10:56

Otto:Schneider:Taubenweg 2:Berlin:10:5:47

Kristina:Weber:Altenberger Chaussee 2:Zittau:9:8:71

Michael:Kolbe:Uferstr. 24:Rostock:23:11:70

David:Goldstein:Florastr. 7:Essen:8:11:38

Hannelore:Becker:Bismarckstr. 173:Hamburg:21:9:50

Jens:Hofmeister:Am Markt 43:Zittau:19:2:73

Anneliese:Zimmermann:Bachstr. 24:Berlin:13:4:34

Thomas:Meier:Forstweg 1:Stuttgart:7:10:81

الشكل 36

        الملف  adr يحتوي الآن على سجلات ومجالات ، ويسمى هذا الملف في لغة الحاسوب قاعدة

مُعطيات (بيانات)(database)  ، والسجل يسمى (record)  والمجال  (field) . ومحتوى ملف adr 

يتكون من عدة سجلات ،  وكل سجل يتكون من عدة مجالات يُفصَـلُ ما بينها بواسطة (:).

 

        وننشىءُ الآن ملفاً آخرَ (نسخة عن adr) بمواصفات مماثلة،  باسم  new  ¡ ونغير به بعض

السجلات كالتالي :

 

الملف new

Susanne:Krieger:Fischerweg 8:Jena:1:5:67

Harry:Meier:Dorfstr. 12:Reutlingen:2:10:56

Sven:Baumann:Eschenfeld 4:Bremen:16:2:65

Otto:Schneider:Taubenweg 2:Berlin:10:5:47

Kristina:Weber:Altenberger Chaussee 2:Zittau:9:8:71

David:Goldstein:Florastr. 7:Essen:8:11:38

Michael:Kolbe:Uferstr. 24:Rostock:23:11:70

Hannelore:Becker:Bismarckstr. 173:Hamburg:21:9:50

Jens:Hofmeister:Am Markt 43:Zittau:19:2:73

Anneliese:Zimmermann:Bachstr. 24:Berlin:13:4:34

الشكل 37

 

        والآن نقارن الملفين بواسطة  cmp  كالتالي:

 

$ cmp new adr

new adr differ: char 42¡ line 2

 

        وهذا يعني أن الملفين مختلفان اختلافاً يبدأ في السطر الثاني ، ومجموع الاختلاف 42

حرفاً ، وبرنامج cmp   لايهمه نوع الاختلاف الموجود ، ولكنه يُفصح عن تعداد ال Byte's  ¡

ويخبرنا عن حالة الاختلاف تعدادياً.

 

        أما برنامج diff فيعطينا حالات الاختلاف مفصلة ، ويقرأ الملف سطراً سطراً ، ويبين

البرنامجُ ذلك بإظهار اختلاف السطور كما يلي:

 

$ diff new adr

2¡3c2

< Harry:Meier:Dorfstr. 12:Reutlingen:2:10:56

< Sven:Baumann:Eschenfeld 4:Bremen:16:2:65

.....

> Udo:Meier:Dorfstr. 12:Reutlingen:2:10:56

5a5

> Michael:Kolbe:Uferstr. 24:Rostock:23:11:70

9a10

> Thomas:Meier:Forstweg 1:Stuttgart:7:10:81

الشكل 38

 

        في هذه الحالة يُظهر البرنامج diff - بواسطة أحرف ورموز - كيفيةَ تصحيحِ الملف

الثاني ، ليصبح مماثلاً للملف الأول .

 

الرموز تعني : a  إضافة added ¡ و c تغييرchange  ¡ و d حذف delete. ونجد رقمَ السطر (

السجل) المتسلسل المعني بالتغيير بعد هذه الأحرف ، ثم نجد السجل من الملف الأول مسبوقاً برمز

> ، والسجل من الملف الثاني مسبوقاً برمز < ، وفي المثال الأعلى (الشكل 38) : تظهر من الملف

 new  أرقام السجلات التي يجب تغييرها 2،3c2 ، وبعد ذلك يظهرالسجل الخامس 5a5 من adr 

لإضافته إلى ما بعد السجل الخامس من  new  ، وكذلك التاسع بعد العاشر 9a10 ...إلخ.

        واذا استعملنا إدخال الملفات بعكس ماذكرنا في الأعلى يكون adr  هو الأول ،  وnew 

هو الثاني:

 

$ diff  adr  new

2c2¡3

< Udo:Meier:Dorfstr. 12:Reutlingen:2:10:56

...

> Harry:Meier:Dorfstr. 12:Reutlingen:2:10:56

> Sven:Baumann:Eschenfeld 4:Bremen:16:2:65

5d5

< Michael:Kolbe:Uferstr. 24:Rostock:23:11:70

10d9

> Thomas:Meier:Forstweg 1:Stuttgart:7:10:81

الشكل 39

 

        هنا يُعلمنا البرنامج  diff نتيجة المقارنة ، وهي أن السجل الثاني من adr  يجب

تبديله بالسجل الثاني والثالث من new  ¡ و يُحذَفُ السجلان الخامس والعاشر من adr  (d) .

 

        وبرنامج  diff  لايصلح لمقارنة الملفات البينرية binary-files التي تحتوي على لغة

الآلة ، وفي هذه الحالة يكون من الأفضل استعمال البرنامج cmp .

 

2.8  تجزئة الملفات

 

        في بعض الأحيان يكون من الضروري تقسيم الملفات الكبيرة إلى ملفات صغيرة ، وبواسطة

البرنامج split نستطيع إنجاز ذلك .

 

        يجزئ البرنامج split  ملفاً ما بتقسيمه إلى عدة ملفات ، ويخزن كل كمية في ملف جديد

يحمل الاسم الأصلي بالإضافة إلى الأحرف الأبجدية بالتسلسل (  aa¡ab¡ac¡ad .........zz) ¡ وذلك

حسب الإدراج الكمبيوتري لعدد الملفات التي تُنشأ بواسطة  split . وإذا أردنا تجزئة الملف

adr (انظر في الأعلى) إلى أجزاء ، كل منها 4 سطور ، يتجزأ الملفadr  إلى عدة ملفات كالتالي

(adraa adrab adrac ......) .

 

        وفي المثال التالي نقوم بتسمية الملفات اسماً آخر :

 

$ split -4 adr teil

$ ls

adr   teilaa  teilab  teilac

$ cat teilaa

Susanne:Krieger:Fischerweg 8:Jena:1:5:67

Udo:Meier:Dorfstr. 12:Reutlingen:2:10:56

Otto:Schneider:Taubenweg 2:Berlin:10:5:47

Kristina:Weber:Altenberger Chaussee 2:Zittau:9:8:71

$ cat teilab

Michael:Kolbe:Uferstr. 24:Rostock:23:11:70

David:Goldstein:Florastr. 7:Essen:8:11:38

Hannelore:Becker:Bismarckstr. 173:Hamburg:21:9:50

Jens:Hofmeister:Am Markt 43:Zittau:19:2:73

$ cat teilac

Anneliese:Zimmermann:Bachstr. 24:Berlin:13:4:34

Thomas:Meier:Forstweg 1:Stuttgart:7:10:81

الشكل 40

 

        وبما أن الملف adr يحتوي على عشرِ سجلات ، فقد أَنشَأَ البرنامج  split  3 ملفات جديدة

، وأصبح محتوى الملف الأخير سجلين ، لأنه لم يبق هناك سجلات. وبرنامج split  لا يُستعمل لتقسيم

الملفات البينرية (الملفات التي تحتوي على أحرف لغة الآلة) .

 

3.8  تصنيف الملفات

 

        يكون ضرورياً في بعض الأحيان ، أو بالأحرى في أغلبها ،  تصنيف المعلومات الواردة في

السجلات لتبسيط العثور على محتوياتها ، وعمليات التصنيف والترتيب هذه يقوم بها البرنامج

sort  .

 

        لنفترض أننا الآن بحاجة إلى تصنيف الملف adr الذي يحتوي على سجلات أشخاصٍ (أسماء

وعناوين ومكان وتاريخ الميلاد) ، ونريد ترتيباً حرفياً لكل من الاسم الأول واسم العائلة أو

العكس ، فإننا نقوم بما يلي :

 

نجعل sort يُخرج التصنيف إلى ملف جديد ، نضع به الترتيبات الجديدة ، ويرسل   sort التصنيف

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

الرمز <  واسم الملف الذي نريد أن نُخرج إليه التصنيف ( أو نستعمل الإضافة  -o واسم الملف )

.

 

         وإدخال كيفية التصنيف تكون كالتالي:

 

+field1.character1   -field2.character2

مجال1+ . حرف التصنيف1   .مجال2-  حرف التصنيف2

 

        وهذا يعني: بداية التصنيف + ، والنهاية - ، من كل مجال ،  ويمكن إدخال الحروف

التي يجب تصنيفها character . فمثلاً  +1 -2 يعني أنه يجب بداية التصنيف في المجال الثاني ،

وينتهي التصنيف لدى الوصول إلى بداية المجال الثالث . ومن الممكن تحديد التصنيف بوضع

الحرف من محتوى المجال ، ووضعِ نهاية التصنيف بذات المجال مثل) 1.5-  +1.3 ) ، و يعني ذلك

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

وبرنامج sort   يَفهمُ في العادة أن المجالات منفصلة بفراغ أو بفراغ موسع (Tab) ، ولذلك يجب

إعلام البرنامج عن نوعية انفصال المجالات (في النقطة المزدوجة : مثلاً) . وباستعمال الإضافة 

-t وبالرمز المتفق عليه (:) نستطيع إعلام sort بذلك . والبرنامج sort يُصنِّف حسب ترتيب ال 

ASCII-Code  . ومن المستطاع عدم التفريق ما بين الحروف الصغيرة والكبيرة بواسطة استعمال

الإضافة-f  ، فإذا أردنا ترتيب الأرقام فيجب استعمال الإضافة -n   ، لأنه بخلاف ذلك يكون

التصنيف خاطئاً.  وإذا أردنا أن نبدأ التصنيف بالحرف الأخير من الأبجدية فإننا نستعمل الإضافة

-r   التي تقلب التصنيف لتجعله عكسياً ، أي Z في الأول ، و A في الأخير.

 

        ونقدم الآن بعض أمثلة التصنيف باستعمال الملف adr :

 

$ sort adr

Anneliese:Zimmermann:Bachstr. 24:Berlin:13:4:34

David:Goldstein:Florastr. 7:Essen:8:11:38

Hannelore:Becker:Bismarckstr. 173:Hamburg:21:9:50

Jens:Hofmeister:Am Markt 43:Zittau:19:2:73

Kristina:Weber:Altenberger Chaussee 2:Zittau:9:8:71

Michael:Kolbe:Uferstr. 24:Rostock:23:11:70

Otto:Schneider:Taubenweg 2:Berlin:10:5:47

Susanne:Krieger:Fischerweg 8:Jena:1:5:67

Thomas:Meier:Forstweg 1:Stuttgart:7:10:81

Udo:Meier:Dorfstr. 12:Reutlingen:2:10:56

الشكل 41

        هنا لم نُدخلِ المجالَ ، ولذلك صُنف الملف بإعتبار الحرف الأول من السجل .

 

$ sort -t: +3 -4  adr

Anneliese:Zimmermann:Bachstr. 24:Berlin:13:4:34

Otto:Schneider:Taubenweg 2:Berlin:10:5:47

David:Goldstein:Florastr. 7:Essen:8:11:38

Hannelore:Becker:Bismarckstr. 173:Hamburg:21:9:50

Susanne:Krieger:Fischerweg 8:Jena:1:5:67

Udo:Meier:Dorfstr. 12:Reutlingen:2:10:56

Michael:Kolbe:Uferstr. 24:Rostock:23:11:70

Thomas:Meier:Forstweg 1:Stuttgart:7:10:81

Jens:Hofmeister:Am Markt 43:Zittau:19:2:73

Kristina:Weber:Altenberger Chaussee 2:Zittau:9:8:71

الشكل 42

 

        هنا أخبرنا sort أن المجالاتِ منفصلةٌ بواسطة النقاط (:) وأنَّ التصنيف يجب أن يبدأ في

المجال الرابع (3+) (أي المدينة) ،   وينتهي به (لغاية 4-)، واسمُ الملف  adr.

 

$ sort -t: +3 -4  +1 -2  adr

Otto:Schneider:Taubenweg 2:Berlin:10:5:47

Anneliese:Zimmermann:Bachstr. 24:Berlin:13:4:34

David:Goldstein:Florastr. 7:Essen:8:11:38

Hannelore:Becker:Bismarckstr. 173:Hamburg:21:9:50

Susanne:Krieger:Fischerweg 8:Jena:1:5:67

Udo:Meier:Dorfstr. 12:Reutlingen:2:10:56

Michael:Kolbe:Uferstr. 24:Rostock:23:11:70

Thomas:Meier:Forstweg 1:Stuttgart:7:10:81

Jens:Hofmeister:Am Markt 43:Zittau:19:2:73

Kristina:Weber:Altenberger Chaussee 2:Zittau:9:8:71

الشكل 43

        في الشكل 43 يكون الأسلوب كالتصنيف السابق ، ولكن هنا أعْـلمْنا  sort  أنه في حال

تعدد اسم التصنيف ( المدينة ) فيجب متابعة التصنيف في مجال ثانٍ (1+) ، وهو الاسم الثاني

للشخص (العائلة) .

 

$ sort -t: +4  -5  adr

Susanne:Krieger:Fischerweg 8:Jena:1:5:67

Otto:Schneider:Taubenweg 2:Berlin:10:5:47

Anneliese:Zimmermann:Bachstr. 24:Berlin:13:4:34

Jens:Hofmeister:Am Markt 43:Zittau:19:2:73

Udo:Meier:Dorfstr. 12:Reutlingen:2:10:56

Hannelore:Becker:Bismarckstr. 173:Hamburg:21:9:50

Michael:Kolbe:Uferstr. 24:Rostock:23:11:70

Thomas:Meier:Forstweg 1:Stuttgart:7:10:81

David:Goldstein:Florastr. 7:Essen:8:11:38

Kristina:Weber:Altenberger Chaussee 2:Zittau:9:8:71

الشكل 44

طلبنا ترتيب يوم الميلاد دون الإضافة -n

 

$ sort -t: -n +4  -5  adr

Susanne:Krieger:Fischerweg 8:Jena:1:5:67

Udo:Meier:Dorfstr. 12:Reutlingen:2:10:56

Thomas:Meier:Forstweg 1:Stuttgart:7:10:81

David:Goldstein:Florastr. 7:Essen:8:11:38

Kristina:Weber:Altenberger Chaussee 2:Zittau:9:8:71

Otto:Schneider:Taubenweg 2:Berlin:10:5:47

Anneliese:Zimmermann:Bachstr. 24:Berlin:13:4:34

Jens:Hofmeister:Am Markt 43:Zittau:19:2:73

Hannelore:Becker:Bismarckstr. 173:Hamburg:21:9:50

Michael:Kolbe:Uferstr. 24:Rostock:23:11:70

الشكل 45

        لم نستعمل في الحالة الأولى  -n (الشكل 44)  لترتيب الأرقام ،  بل استعملناها في

المثال الثاني (الشكل 45) لترتيب أيام الميلاد للاشخاص ، دون الأشهر والسنين.

 

4.8 اقتطاع المعلومات

 

        وهنا نتحدث عن البرنامج cut  الذي يقتطع معلومات معينة من الملف ، ويظهرها على

الشاشة ، أو يخزنها في ملف آخر. و  cut  يفهم الإضافات :  -f    وتعني المجالات (field) ¡ و

-d  للإشارة إلى رمز الانفصال ، و -c  للإشارة إلى الحروف في السجل أو المجال . وهنا مثال

على ذلك :

 

$ cut -d: -f1-2¡4 adr

Susanne:Krieger:Jena

Udo:Meier:Reutlingen

Otto:Schneider:Berlin

Kristina:Weber:Zittau

Michael:Kolbe:Rostock

David:Goldstein:Essen

Hannelore:Becker:Hamburg

Jens:Hofmeister:Zittau

Anneliese:Zimmermann:Berlin

Thomas:Meier:Stuttgart

الشكل 46

        وهنا - في الأعلى - أدخلنا الإضافة -d:  مع رمز الانفصال (:) ، وتظهر المجالات من

الأول إلى الثاني زائد الرابع -f1-2¡4 ¡ والملف المشار إليه وهو  adr.

 

$ cut -d: -c1-20 adr

Susanne:Krieger:Fisc

Udo:Meier:Dorfstr. 1

Otto:Schneider:Taube

Kristina:Weber:Alten

Michael:Kolbe:Uferst

David:Goldstein:Flor

Hannelore:Becker:Bis

Jens:Hofmeister:Am M

Anneliese:Zimmermann

Thomas:Meier:Forstw

الشكل 47

        واستعملنا هنا ( حرفc = character  ) -c1-20  لتحديد أول 20 حرفاً من السجل (من c1

إلى c20) من الملف adr  .

 

5.8  تبديل الأحرف داخل الملف

 

        في حال الرغبة بتبديل أحد الأحرف من محتوى أحد الملفات نستعمل البرنامج  tr  الذي

يقوم  بهذه المهمة.

 

        وهنا نُغير الفاصلة (:) إلى الفاصلة (.) في الملف adr  بواسطة رمز الإدخال >:

 

$ tr   : .  < adr

Susanne.Krieger.Fischerweg 8.Jena.1.5.67

Udo.Meier.Dorfstr. 12.Reutlingen.2.10.56

Otto.Schneider..Taubenweg 2.Berlin.10.5.47

Kristina.Weber.Altenberger Chaussee 2.Zittau.9.8.71

Michael.Kolbe.Uferstr. 24.Rostock.23.11.70

David.Goldstein.Florastr. 7.Essen.8.11.38

Hannelore.Becker.Bismarckstr. 173.Hamburg.21.9.50

Jens.Hofmeister.Am Markt 43.Zittau.19.2.73

Anneliese.Zimmermann.Bachstr. 24.Berlin.13.4.34

Thomas.Meier.Forstweg 1.Stuttgart.7.10.81

الشكل 48

 

        ولم نُرسل التغيير إلى ملف آخر ، وقد ظهر فقط على الشاشة ، وبقي محتوى الملف  adr 

كما كان ولم يتغير . وفي حال تغيير رموز مثل * أو ; فيجب وضعها مابين فواصل مرفوعة هكذا:

‘*‘ أو "*" ، وفي حال وضعها دون فواصل حماية فإنَّ النظام يفهمها خطأ .  هذا ويمكن حمايتها

بواسطة \ أيضاً.

 

        ونستطيع تغييرَ عدة أحرف بأخرى أو تغييرَ جميع الحروف الصغيرة بحروف كبيرة ...إلخ ،

باستعمال التحديد (a-z) أو (A-Z) . ومن الممكن تغيير حروف معينة باعادة التكرار .

 

مثال : إذا أردنا أن نُغيرَ حرف a  4 مرات ندخلها هكذا (a*4) . ويجب هنا الانتباه إلى أن

system V ، و BSD ، والأنظمةَ الأُخرى تختلف في طريقة الإدخال syntax ، ولذلك يجب الرجوع إلى

ال manual  لمعرفة الصحيح.

 

        وإليك بيانَ الاختلاف في إدخال الأمر tr في  system V و BSD  :

 

        system V:

 

$ tr   '[A-Z]'  '[a-z]'  < adr

susanne:krieger:fischerweg 8:jena:1:5:67

udo:meier:dorfstr: 12:reutlingen:2:10:56

otto:schneider:taubenweg 2:berlin:10:5:47

kristina:weber:altenberger chaussee 2:zittau:9:8:71

michael:kolbe:uferstr.24:rostock:23:11:70

david:goldstein:florastr. 7:essen:8:11:38

hannelore:becker:bismarckstr. 173:hamburg:21:9:50

jens:hofmeister:am markt 43:zittau:19:2:73

anneliese:zimmermann:bachstr. 24:berlin:13:4:34

thomas:meier:forstweg 1:stuttgart:7:10:81

الشكل 49

 

        ونستطيع إدخال الأمر tr هكذا في   BSD-Unix:

$ tr   A-Z    a-z     <adr

        ونحصل على ذات المحتوى أو الإظهار كما في الشكل 49 .

 

        وهنا نغير جميع الأرقام ونضع (?) بدلاً منها (system V) :

$ tr   '[0-9]'  '[?*]'  < adr

Susanne:Krieger:Fischerweg ?:Jena:?:?:??

Udo:Meier:Dorfstr. ??:Reutlingen:?:??:??

Otto:Schneider:Taubenweg ?:Berlin:??:?:??

Kristina:Weber:Altenberger Chaussee ?:Zittau:?:?:??

Michael:Kolbe:Uferstr: ??:Rostock:??:??:??

David:Goldstein:Florastr. ?:Essen:?:??:??

Hannelore:Becker:Bismarckstr. ???:Hamburg:??:?:??

Jens:Hofmeister:Am Markt ??:Zittau:??:?:??

Anneliese:Zimmermann:Bachstr. ??:Berlin:??:?:??

Thomas:Meier:Forstweg ?:Stuttgart:?:??:??

 الشكل 50

BSD-Unix :

$ tr   0-9   '?'     <adr

 

        ونستطيع حذف أحد الأحرف أو الرموز (مثل :) من الملف بواسطة الإضافة -d:

 

$ tr  -d  :  < adr

SusanneKriegerFischerweg 8Jena1567

UdoMeierDorfstr 12Reutlingen21056

OttoSchneiderTaubenweg 2Berlin10547

KristinaWeberAltenberger Chaussee 2Zittau9871

MichaelKolbeUferstr 24Rostock231170

DavidGoldsteinFlorastr 7Essen81138

HanneloreBeckerBismarckstr 173Hamburg21950

JensHofmeisterAm Markt 43Zittau19273

AnnelieseZimmermannBachstr 24Berlin13434

ThomasMeierForstweg 1Stuttgart71081

الشكل 51

 

6.8  تركيب الأوامر

 

لدى تشغيل عدة برامج في إيعاز واحد ، نستعمل البرنامج  xargs  للإخراج المشترك :

 

$ ls *.c | xargs echo Hier is all C-Programs:

Hier is all C-Programars: Prog1.C Prog2.C Prog.3C.......

 

        هنا يسرد البرنامج  LS  جميع الملفات التي تنتهي بحرف  .c   وبواسطة الأنبوب (|)

يُرسَـل الإخراج إلى xargs ¡الذي يقوم بدوره بتشغيل الأمر echo ¡ الذي يرسل العبارة  (Hier is

all Programs:) ، وبعد ذلك يخرج ماتوصل إليه البرنامج LS إلى الشاشة . وفي حالة أخرى يمكن

استعمال الإضافة  -n  لجعل xargs  يعيد الوظيفة حتى ينتهيَ الإنجاز .

 

وإليك مثالاً على ذلك:

 

$ ls *.dat | xargs -n1 cmp compare.dat

compare.dat a.dat differ: char 21¡line 3

compare.dat b.dat differ: char 32¡line 7

compare.dat c.dat differ: char 43¡line 12

 

         نرى هنا الملف compare.dat يُقارَن مع الملفات التي وجدها البرنامج  ls  . والإضافة

 -n1 تجعل البرنامج xargs   يفرض على البرنامج cmp أن يأخذ ملفاً واحداً ، ويقارنه ، ثم

يأخذَ التالي ...إلخ .  حتى تنتهيَ مقارنة جميع الملفات التي تنتهي أسماؤها ب (.dat) .

 

        وهاك مثالاً آخرَ للبرنامج xargs أكثر تعقيداً من المثال السابق:

 

$ ls *.c | cut -d. -f1 | xargs -ip mv p.c p.old

 

        وهنا يبحث البرنامج ( ls ) عن الملفات التي تنتهي بحرفc  (*.c) . والإضافةُ  -d 

تُستعمل للإفصاح عن نوعية فصل المجالات بعضها عن بعض بواسطة رمز ( هو في مثالنا هذا النقطة

في *.c) . وفي المثال الأعلى لدينا مجالان : بديلة الاسم (*) وحرف (c) تفصلهما نقطة (*.c) ¡

ونختار المجال الأول (الاسم دونc  ممثلاً ب *) بواسطة الإضافة -f1 التابعة للأمر cut ، ليُخرِجَ

لنا اسم الملف فقط دون النقطة ودون حرف c . وبعد ذلك يَستَعمل xargs  الإضافة  -ip  لوضع اسم

الملف بها ، ويجعل mv يُغير الاسم الأول من الملفات التي تنتهي ب   .c إلى ذات الاسم + عبارة

(.old ) .

 

        ويمكن أن تُستَبدلَ هذه العملية باستعمال الأمر mv  مكرراً بعدد الملفات الموجودة على

هذا النمط وبتحويلها على النحو التالي:

 

$ mv  hollo.c hollo.old

$ mv  backup.c      backup.old

$ mv  display.c      display.old

        واستعمال البرنامج xargs يوفر علينا وقتاً طويلاً من العمل ، ويكون مساعداً في بعض

الأحيان.

 

7.8  البحث عن معلومات معينة

 

        البرنامج  grep  هو من أكثر البرامج استعمالاً ، لقدرته على البحث عن المعلومات

المطلوبة داخل الملفات . وهناك ثلاثة برامج مطابقة: grep ¡ egrep ¡ fgrep  وهي برامجُ تمتاز

بقدرات متساوية . وفي هذا الكتاب نشرح عمل البرنامج grep :

 

$ grep Berlin adr

Otto:Schneider: Taubenweg 2:Berlin:10:5:47

Anneliese:Zimmerman:Bachstr.24:Berlin:13:4:34

$ grep ' ^Jens ' adr

Jens:Hofmrister:Am Markt 43:Z:Hau:19:2:73

$ grep ' 7.$ '  adr

Kristina:Weber:Altenberger Chaussee2:Z:Hau:9:8:71

          بحثنا أولاً عن  Berlin في الملف adr ¡ وتَظهَرُ السطور التي تحتوي هذه الكلمة . وفي

المثال الثاني بحثنا عن الاسم في بداية السجل بواسطة (^)  ، وفي المثال الثالث استعملنا $

(أي قبل الاخير من السجل يكون الرقم 7) ، وهذا يعني أن سنة الميلاد تكون في السبعينات .

ويمكن استعمال * للبحث المتكرر عن حرف ما . واذا استعملنا الإضافة-c  فيُظهر لنا  grep عدد

السجلات التي تحتوي كلمةً أو حرفاً ما :

 

$ grep -c o adr

5

 

        ومعنى ذلك أن grep وجد حرف o في خمسة أسطر . وعكس ذلك نستعمل الإضافة  -v  لإظهار

السطور التي لاتحتوي مفهوماً معيناً .

 

$ grep -v '7.$' adr

Susanne: Krieger 8:Jena:1:5:67

.............

 

        وهذه السجلات لاتحتوي (الرقم قبل الأخير) 7 .

 

8.8  ملفات الأرشيف

 

        بواسطة البرنامج  tar يمكن عمل ملف واحد لاحتواء عدد من الملفات وضمها إليه ،

استعداداً للتخزين المُكَثَّف . ويُحَـبَّـذ استعمال هذا البرنامج لدى إرسال المعلومات والبيانات

عبر الشبكة العالمية ، والتكثيف يقلل تكلفة هذه المهمة . وبدل إرسال 100 ملف ، توضع هذه

الملفات في ملف واحد (أرشيف) ، وبعد ذلك تُكثف بواسطة البرنامج compress الذي يقلل حجم

الملف .

        وهنا نشرح كيفية عمل الأرشيف أولاً:

 

 

$ tar cvf script.tar script    دليل ما script هنا

a script/sendx 1 blocks

a script/sonds 1 blocks

a script/vws     2 blocks

a script/ast      1 blocks

 

        قام tar بتخزين جميع الملفات الموجودة في الدليل script في ملف واحد

أسميناهscript.tar  .

 

        إضافات tar :

 

 = c creat            أنشىء ملفاً جديداً

 = r   write          اكتب في ملف موجود (إضافة)

 = v   verbose       أفصح عمّا فعلته ، وبدون v لاتظهر الملفات المؤرشفة.

 = f   file            أرسلْ كل الملفات إلى filename (ودونها يرسل tar                  

        الأرشيف إلى وحدة أشرطة التخزين)

 = x                  إعادة الملفات إلى حالتها الأصلية من ملف الأرشيف

 = t                   إظهار مابداخل ملف الأرشيف من ملفات.

 

        وهنا بعض الأمثلة :

 

$ tar rvf script.tar udat

 

a udat 3 blocks

 

        أضفنا الملف udar إلى ملف الأرشيف script.tar بواسطة r .

 

 

$ tar xvf script.tar

x script/sendx¡ 38 Bytes¡ 1 tape blocks

x script/send2¡ 49 Bytes¡ 1 tape blocks

x script/rws¡      541 Bytes¡ 2 tape blocks

x script/ast¡      28   Bytes¡ 1 tape blocks

x udat¡ 1038 Bytes¡ 3 tape blocks

 

        وهنا حَوّلنا الأرشيف  script.tar  إلى ملفات ، وأعدناها إلى وضعها الأصلي بواسطة x .

 

$ tar  tvf  script.tar

rwxr-x---  13014/100   39    0      Aug   24   22.22  1993 script/

rwxr-x---  13014/100   39    38     Aug   24   21.14  1993 script/sendx

rwxr-x---  13014/13     46            Aug   24   12.15  1993 script/sendz

rwxr-x---  13014/13    54             Aug   24   23.12  1993 script/rws

rwxr-x--x 13014/13      28    Aug   24   12.18  1993 script/ast

rw-rw----  13014/13   1038    Aug   24   20.13  1993 udat

الشكل 52

 

        وهنا تظهر الملفات المخزنة في ملف الأرشيف من اليسار إلى اليمين : الحقوق و UID  ¡

وعدد ال Bytes ¡ والشهر ، واليوم ، والساعة ، والعام ، والاسم مع الدليل .

9.8  تكثيف الملفات

 

        تكثيف الملفات من أهم الأعمال التي يقوم بها مدير النظام أو المسؤول عن تخزين

المعلومات ، وكذلك إرسالها عبر الشبكات المحلية والدولية، لأن التكثيف يوفر من سعة

أسطوانات و أشرطة التخزين ، ويوفر رسوم إرسال المعلومات عبر الشبكات. وفي أغلب الأحيان

تُخزن ملفات تحتوي على معلومات حروف مثل البيانات ، و الرسائل ، والعقود التجارية ، إلخ...

 

         ويتواجد في هذه الملفات كثيرٌ من الكلمات والعبارات التي يتكرر ذكرها ، وبرنامج 

compress يجمع هذه المعلومات - التي يعاد ذكرها - في رموز معينة يفهمها البرنامج . وفي

أغلب الأحيان يُقلّص عدد ال  Bytes  في حجم الملف إلى النصف أو الربع بواسطة compress .

ولايصلح استعمال الملفات المكثفة إلا بعد فك تكثيفها ، وإعادتها إلى حالتها الأصلية .

 

        وهاك مثالاً على ذلك:

 

$ ls -al text*

-rw-r--r--     1      ziad    233353        May 10     10:26 text.Z

$ compress   text.Z

$ ls -al text*

-rw-r--r--     1      ziad    52895       May   10     10:26 text.Z

 

        هنا نرى أن الملف text.Z كان حجمه233353 (Bytes)  حرفاً ، وأصبح بعد التكثيف 52895

حرفاً ، أي صار أقلَّ من ربع حجمه الأصلي ، وهذا يوفر- طبعا- توفيراً  ملموساً في جميع المجالات.

 

هذا ، ونستطيع إعادة الملف text إلى وضعه الأصلي بواسطة :

 

$ compress -d text                   (decompress) -d لاتنسَ الإضافة

 

        وهناك برامج أُخرى شبيهة القدرة ، وظيفتها تكثيف الملفات مثل :  zip¡ lharc ¡ zoo¡

freeze .

 

10.8  برامج أُخرى مساعدة

 

        البرنامج sed محرر ضعيف القدرات ، نغير بواسطته بعض الكلمات في ملف ما ، كمكان

الميلاد في الملف   adr  من  Berlin  إلى Dortmund  .

 

مثلاً:

$ sed s/Berlin/Dortmmund/ adr

 

        يَظهَرُ لنا الملف كالسابق ولكن مع  Dortmund بدل Berlin ¡ ويجب استعمال < إذا أردنا

وضع الإخراج في ملف آخر.

 

        ويمكن تحديد التغيير في السطور من 1 إلى 4 :

 

$ sed 1¡4s/Berlin/Dortmund/  adr

.

        ويمكن استعمال الإضافةq  وd  :

$sed    5q   adr

        يظهر أول 5 أسطر .

 

$ sed  4¡6d  adr

                        إظهار السطور جميعها ماعدا 4 إلى 6 .

 

        والبرنامج  awkيقرأ السطور من ملف معين ، ويستعمل الإضافات كأوامر ، ويمكن

استعماله لبرمجة بسيطة ،  مثل استعمال اللغات الدارجة  C  أو BASIC  وغيرها . وإذا

استعملناه لقراءة الملفات فقط ، يكون شبيهاً إلى حد بعيد بالبرنامج grep  ¡ ولكنَّ الإخراج

يكون أدقَّ وأوضحَ :

 

$ awk  /Berlin/ adr

        تظهر لك السطور التي تحتوي Berlin  فقط .

 

$ awk  -F: '{   $7 > 60 }'  adr

        وهنا التوضيح (-F:) أن (:) هي الفاصل مابين المجالات . وأن (7$) هي المجال السابع

الذي يجب أن يكون أكثرمن 60 (60<) .  وهكذا يظهر لنا  كل الاشخاص المولودين بعد عام 60 .

وهنا طريقة أخرى (الشكل 53):

 

$ awk  -F: '{  print  "Name: " ¡  $1¡ $2 }'  adr

Name: Susanne Krieger

Name: Udo Meier

Name: Otto Schneider

Name: Kristina Weber

Name: Michael Kolbe

Name: David Goldstein

Name: Hannelore Becker

Name: Jens Hofmeister

Name: Anneliese Zimmermann

Name: Thomas Meier

الشكل 53

 

                في هذه الحالة يجب وضع الأوامر الإضافية مابين أقواس الزوايا [ ] مثل print

وتوابعها ، ووضع الإظهار الإضافي مثل "Name" مابين مرفوعات مزدوجة . وجميعُ الأوامر الإضافية

وتوابعها تُحتَضَن بين مرفوعات '  ' عادية.

 

        وللتوضيح (الشكل 53) : كما ذكرنا أن الإضافة (-F:) تفصح علامة الفصل (:) ، و  print

"Name :"  هي أظهر  Name : ¡ و بعدها أظهر المجالين 2$ 1$ وهما الاسم الأول ، واسم العائلة

من الملف adr  .

 

        وإذا وضعنا /Berlin/ قبل print  :

 

$ awk -F: '/Berlin/ { print "Name:"¡$1¡$2' adr

 

        فإنه تظهر لنا فقط السطور التي تحتوي Berlin في الوضع السابق .

 

        وهنا مثال أكثر تعقيداً للإشارة إلى قدرة الحساب :

 

$ awk ' { n=nt$7} END { print "Sum:"¡n}' adr

 

        وهذا يحسب الأعوام ، ويظهر لنا المجموع (n).

الفصل التاسع

 

البريد الإلكتروني

 

 

1.9    الاتصال المباشر

2.9    البريد الإلكتروني electronic mail

الفصل التاسع

البريد الإلكتروني

 

        بما أن يونيكس نظام متعدد المستخدِمين (multiuser-system) فإنَّ من السهل إجراءَ

عملية اتصال مابين مستخدِميه ، يستطيعون بواسطتها إرسال الأخبار والأسئلة والردَّ عليها . ومن

الممكن إيضاً إرسال واستقبال ملفات بأحجام مختلفة ، تحتوي على المعلومات المختلفة ،

كالرسائل ، والإخبار من نظام إلى آخر. وهناك نوعان من هذه الاتصالات : النوع الأول هو الاتصال

المباشر ، والثاني هو البريد الإلكتروني وهو الاتصال غير المباشر .

 

1.9  الاتصال المباشر

 

        هناك عدة طرق للاتصال المباشر نبين بعضها فيما يلي:

 

        بواسطة البرنامج write ، واسم المستخدِم المعني (شرط أن يكون مرتبطاً بالشبكة أو

النظام) ، نستطيع إرسال الأخبار إليه في حال تواجده بموقعه، أي أن يكون مطرافه عاملاً. ويَكتِبُ

البرنامج write  الأخبار على شاشة المُرسَـل إليه مباشرة دون العبث بموجوداتها ، ويستطيع

مستقبل الخبر  إعادة بناء شاشته باستعمال Ctrl -L بعد قراءة ما أُرسل إليه. وعندما ينتهي

المُرسِـل من الكتابة ينهي العملَ في البرنامج  write  بواسطة  Ctrl -D .

 

        وفي حال الإرسال والاستقبال للطرفين (أي أن يعمل اثنان بواسطة برنامجwrite ) ¡

يستطيع هؤلاء المحادثة كأنما يتحدثون هاتفياً ولكن بالكتابة .

 

        في بعض الحالات يكون لدى أحد المستخدِمين مطراف متعدد النوافذ ، وهذه النوافذ

يُعطيها النظام أسماء مثل ttyp1 ...إلخ. وفي حال وجود عدة نوافذ في مطراف واحد يجب إعلام

write إلى أي مطراف ( نافذة) نريد إرسال الأخبار .

 

        وقبل البدء في المراسلات يجب التأكد - أولاً - من وجود المستخدِمين العاملين حالياً في

النظام :

 

$ who

ziad           ttyp0          May   7      09:40.

max           ttyp1          May   7      10:15

mazen         ttyp2          May   7      11:20

root                   console       Feb    7      08:14

الشكل 54

 

        هؤلاء المستخدِمون يعملون حالياً على الجهاز. وبعد التأكد نباشر الإرسال :

 

$ write  max

You are connected to "max at jordsys ttyp1".

Hay Max !

I need a cup of coffee.              هنا تكتب الخبر                   

Ziad.                                 من

Ctrl-D                                write نهاية البرنامج

 

        ونستعمل الأمر هكذا في حال تعدد النوافذ :

 

$ write max ttyp1

 

        ويُرسَـل الخبر للمستخدِم max إلى النافذة (المطراف)ttyp1   مباشرة.

 

        يفضل استعمال who قبل كل عملية إرسال مباشِرة ، للتأكد من وجود العاملين في

النظام. وإذا أراد أحد المستخدِمين الحيلولةَ دون "إزعاجه" ، فيستطيع أن يحجب ذلك بواسطة

الأمر mesg  n  ¡ ويعيد السماح بالوصول إليه بواسطة mesg  y   ¡ وذلك في حال حصول المستخدِم

على الصلاحية بأن يغير مواصفات مطرافه بواسطة mesg .

 

        ونستطيع رؤية صلاحية التغيير هكذا:

 

$ LS -al  /dev/ttyp1

crwx-w---- 1 max tty  20     6      May   7      13:05 /dev/ttyp1

 

         نرى هناأنَّ في المجموعة الثانية من الحقوق يوجد w ¡ وهذا يعني أن المطراف ليس

محجوباً. وفي حالة حجبه نجد (لا حقوق -) بدل (حقوق w) .

 

        والبرنامجان phone و  talk يُستخدمان أيضاً للاتصال المباشر ، ولديهما ميزات أكثر .

ومن ميزات البرنامج  talkأنه يقسم الشاشة إلى قسمين: قسم إرسال وقسم استقبال ، ويرى

المستقبِلُ المعلومات القادمة حرفاً حرفاً . ويُستَعمَل هذان البرنامجان للاتصال عبر الشبكات

الخارجية ،  وسنذكر مزيداً عن الشبكات لاحقاً .

 

$ talk max

        في هذه الحالة تنقسم الشاشة إلى نصفين ، ويخبرنا النظام بأنه ينتظر الطرف الآخر (

الذي نريد التكلم معه ) مثلاً max ، ، ويظهرعلى شاشتنا   [waiting for your party respond

 . وكذلك الحال من خلال البرنامج  talk  أيضاً . وعلى شاشة max يظهر مايلي :

 

Message from Talk-Daemon@jordsys at 10:15

talk: connection requested by ziad@jordsys      

talk: respond with: talk ziad@jordsys

 

        ويجب على  max الآن أن يعمل بواسطة البرنامج talk لتنقسم شاشته إلى قسمين أيضاً .

في القسم الأعلى نكتب مانريد إرساله ،  وفي ذات اللحظة يُكتب ذلك في شاشة الآخر في القسم

الأسفل . ولدى الاتصال الأول بين الطرفين يظهر في أعلى الشاشة[connection established ]  ،

أي أن الاتصال قد تم . وبعد انتهاء العمل يستطيع أحد الاثنين أن ينهيَ العمل بواسطة Ctrl-C

اوDel  .انقسام الشاشة :

 

 

_

 الشكل 55

2.9  البريد الإلكتروني electronic mail

 

        نظام البريد الإلكتروني يعمل كالبريد المتعارف عليه ، والمعلومات التي تُرسَـل

بواسطته  تكون متنوعة ، مثل ملفات البيانات والصور والموسيقى ...إلخ . وعملية الإرسال تُطبَّق

بشكل ملف يوضع باسم المستخدِم في الدليل /usr/spool/mail  ، ويكون اسم الملف مطابقاً لاسم

المستخدِم (user)  . والإرسالُ البريدي لايظهر على الشاشة مباشرة كالإرسال بواسطة write  و

talk ، ولكنه يُخزن في ملف البريد . وليس من الضروري أن يكون المرسَـل إليه موجوداً في

النظام في وقت وصول البريد الإلكتروني إليه ، لأنه سيجد بريده لاحقاً في ملف صندوق البريد .

 

        بواسطة البرنامج mail نستطيع إرسال وقراءة البريد . وفي بعض الأحيان يكون اسم

البرنامج mailx . وهناك أيضاً البرنامج elm (electronic mail)   وهذا الأخير لايحتويه النظام

يونيكس في العادة ، ويمكن الحصول عليه وإدخاله إلى النظام دون صعوبة أو تكاليف . وهناك

برامجُ مساعدةٌ لإرسال واستقبال البريد مثل  sendmail أو  smil  ، وهي برامج إضافية لإرسال

المعلومات عبر الشبكة الدولية أو المحلية  (WAN & LAN) . وهناك نوعان من برنامج mail  :

Systen V   و  BSD. وطريقة عمل هذه البرامج تكون إلى حد بعيد مطابقة لبعضها.

 

        طريقة إرسال البريد:

 

        إن طريقة إرسال البريد تشبه طريقة إرسال الأخبار المباشرة بواسطة write  . وإرسالُ

البريد بواسطة  mail  يتمّ بإدخال الأمر mail  واسم المستخدِم، وبعد ذلك تُكتب الرسائل التي

تُوجه إليه :

$ mail max

Subject: catalogue of your range           عنوان الرسالة

Dear Max!

 

Your representative¡Mr smith¡ visited me recently¡ and

showed me same gamples of your new lines.

I should be grateful if you would send me a catalogue

of your range of christmas toys...............................

 

Yours faithfully ¡ Ziad Yousef

Ctrl-D                                        هنا ننهي العمل

Cc: mazen

 

        بعد   Cc:يُكتب اسم مستخدِم آخر لإرسال صورة إليه عن الرسالة ،  ويمكن إضافة أسماء

عدد من المستخدِمين بفصلهم بواسطة  الفاصلة (mazen¡ahmad¡...........) .

                                               

        أثناء كتابة الرسالة يكون من المحتمل أن نوقف العمل بواسطة Ctrl-C أو Del  مرتين

، وبعد ذلك يُخزِّن النظام محتوى هذه الرسالة في ملف يسمى (الرسالة الميتة)  dead.letter في

دليل المستخدِم الخاص :

 

$ mail max

Subject: catalogue of your range

Dear Max!

 

Your representative¡Mr smith¡ visited me recently¡ and

Ctrl -C

(Interrupt ... one more to kill letter)

Ctrl-C

(Last Interrupt ...  letter saved in dead.letter)

 

 

$ cat dead.letter

Dear Max!

 

Your representative¡Mr smith¡ visited me recently¡ and

الشكل 56

 

        و نظراً لعدم استطاعتنا تصحيحَ ماكُتب خطأً ، فإنَّ من المستحسن استعمالَ المحرر لكتابة

الرسائل ، وإدخالَها بعد ذلك لإرسالها بواسطة mail .

 

        ولنفترض أننا كتبنا رسالة بواسطة المحرر vi باسم letter  فإننا - في هذه الحالة -

نُدخلها هكذا :

 

$ mail max  <letter

 

        ولايكون هناك عنوان للموضوع (subject) ، ويُرسَـل البريد إلىmax ، ويُؤخذ المحتوى من

الملف letter .

 

        أثناء العمل في برنامج mail التابع لنظام BSD نستطيع الدخول إلى vi مباشرةً ،

وتحريرَ الرسالة ثم إرسالَها ، وذلك أثناء عملية الإرسال :

 

$ mail max

subject: ORDER!

Dear Max

~r filename                         vi ندخل إلى البرنامج

[هنا نكتب ما نريد إرساله  ]

.

[ vi إنهاء الكتابة في  ] 

Ctrl-D 

Cc:

 

        وهنا طريقة لإرسال الملفات البينرية ( البرامج المجمَّعة ) بأن نحولَها أولاً إلى أحرف

بواسطة أحد برامج التحليل ، ونرسلَها بواسطة الأنبوب (|) إلى البرنامج   mail .

 

        لنفترض أنَّ لدينا ملفاً بينرياً يسمى  data  ¡  ونريد إرساله إلى المستخدِم max :

 

$ uuencode data data.code|mail max

 

        والملف data يرسَـلُ مع التحليل في الملف data.code  ¡ ويحصل  max  على الملف مع

معلومات إضافية في أول وآخر الملف .

 

        ويجب على max  أن يعيد الملف إلى حالته الطبيعية بواسطة  uudecode ¡ بعد إزالة

المعلومات المتعلقة بالبريد الإلكتروني:

 

$ uudecode data data.code

 

$ uuencode data data.code هكذا نُظهر المحتوى

 

 

        الاطلاع على البريد القادم والمخزن :

 

        عندما يدخل المستخدِم إلى النظام بواسطة login ويكون له بريد في ملفه ، تظهر

المعلومات You have new mail أو  You have mail ¡ وذلك قبل ظهور المحث وإشارة الغلاف $ أو

% . وإذا أردنا في هذه الحالة قراءة البريد فما علينا إلا استعمال الأمر mail دون إضافات ،

ويظهر البريد على شكل لائحة بيانات للبريد الوارد ، مع اسم المُرسِل ، وتاريخ الإرسال ، وحجم

وموضوع الرسائل .

 

Login: ziad

Password: XXXXXXXXX

 

You have new mail.

 

$ mail

 

Mail  version 5.2+L.  Type  ? for help.

"/usr/spool/mail/ziad": 2 messages  2  new

>N    1      max  Thu     May   28  11:50   18/492  "catalogue"

  N    1      ziad  Wed     May   29  10:54   16/136  "coffee"

&

الشكل  57

 

        وهنا نرى لائحة البريد ،  ويُظهر لنا البرنامج mail الرسائل - واحدةً، واحدةً - في

حال ضغط المفتاح Returm :

 

& <Return>

Message  1  (of 2)

From mazen Thu     May   28  11:50  1993

Date:  Thu    May   28    92   11:50  MES

From:  mazen  (Mazen Yousef)

To:  max

 

Subject: catalogue of your range

Dear Max!

 

Your representative¡Mr smith¡ visited me recently¡ and

showed me same gamples of your new lines.

I should be grateful if you would send me a catalogue

 of your range of christmas toys...............................

 

Yours faithfully ¡ Ziad Yousef

 

(EOF)

 

& <Return>

Message  1  (of 2)

From mazen Wed    May   29  10:54  1993

Date:  Thu    May   29    92   10:54  MES

From:  ziad   (Ziad  Yousef)

To:  max

 

 

Subject: coffee

Hay Max !

I need a cup of coffee.

Ziad.

 

 

(EOF

&

الشكل 58

 

        ونستطيع إظهار الرسائل السابقة بإدخال  رقم الرسالة (message) بعد الإشارة & ،

ليعود البرنامج إلى إظهار الرسالة ( الرسالة رقم 1 مثلا ) . ولإنهاء العمل نُدخل q أو x بعد

الإشارة & . وإذا خرجنا بواسطة q يُحذف البريدُ من وحدة التخزين ، وبواسطة x يبقى البريد

مخزناً ، ونستطيع قراءته مرةً أُخرى بواسطة mail . وفي حال إدخال q تُحذف الرسالةُ من صندوق

البريد ، وتتواجد بعد ذلك في الملف mbox في دليل المستخدِم .

 

& q

Held   1 message in /usr/spool/mail/ziad

Saved 1 message in mbox

 

        هنا وضع البرنامج mail رسالةً في الملف mbox ¡ وحذفَ رسالة من صندوق البريد ziad .

ومن المستطاع حذفُ إحدى الرسائل بواسطة الإضافة d   ورقم الرسالة (& d1) .  وإذا خرجنا بعد

ذلك بواسطة q تحذفُ الرسالة نهائياً.

 

وإذا أردنا رؤية لائحة الرسائل مرة أُخرى نُدخل h :

 

& h

1 Max Thu Mag 15 12:10....................

>2...................

&

 

        وباستخدام حرف m بعد & مع إضافة اسم أحد المستخدِمين ، نستطيع إرسال بريد جديد :

 

& m max

 

        بعد ذلك يظهر لنا مكان الموضوع (subject) ¡ وبعدها  نكتب الرسالة كالمعتاد ...إلخ

، وننهي العمل  ب Ctrl -D .

 

 

        ومن الممكن الرد على الرسالة التي قرأناها أخيراً باستعمال (reply=r)  &  r :

 

& r

To: max

Subject :  Re : Order

.

.

.Ctrl-D

Cc:

&

 

        ويستعمل mail الموضوع ذاته بكتابةSubject :  Re : بدل الموضوع . وجميع إمكانات

البرنامج mail نستطيع رؤيتها باستعمال ?  & (أو & h  في بعض الأحيان وحسب نوعية برنامج

mail) .

 

البرنامج elm:

 

        وهناك أيضاً البرنامج elm (إذا كان موجوداً بالنظام) ،  وهو إلى حد بعيد يشبه mail

في الإمكانات ، ولكنه أفضل للاستعمال ، ونحن ننصح باستعماله بديلاً عنه .

 

        لدى استعمالنا البرنامج elm أول مرة ، يسألنا البرنامج عن إنشاء دليلين جديدين (

mail  &  elm ) في دليل المستخدِم الخاص (Homedirectry) ، لأن elm بحاجة إلى هذين الدليلين

. ولذلك يجب الإجابة على سؤال elm بعمل الدليلين ب y . ودليلُ elm يحتوي قوائمَ وقياساتٍ

يحتاجها البرنامج elm ، وبه تُخزن الرسائل القادمة .

        بعد عمل الأدلة تظهر لك نافذة elm :

 

_

الشكل 59

        تحرك العارضة باستعمال موجه المحث _SYMBOL 175 \f "Symbol"__SYMBOL 173 \f

"Symbol"_ للأسفل والأعلى ، ولقراءة البريد Return . وفي أسفل النافذة الرئيسة نجد الأحرف

التي تُستعمل لوظائف مختلفة :

 d = delite احذف

 u = undelete ارفع الحذف

m  = mail a message أرسل رسالة

 r = reply إجابة على الرسالة

 f = forward إرسال نسخة إلى أحد المستخدِمين

 q = quit نهاية العمل بالبرنامج

 z = help معلومات مساعدة

 s = save تخزين في الملف

_

الشكل 60

        في أسفل هذه النافذة نجد " i " ¡ وبواسطتها نعود إلى النافذة الرئيسة .

 

_

الشكل 61

        ولإرسال الرسائل وللإجابة عليها مباشرة ، يُشغِّل البرنامج elm المحررَ vi تلقائياً :

_

الشكل 62

 

        هنا نجيب على الرسالة بكتابة كل جواب في أسفل السؤال . والأسئلة تظهر بعلامة < على

الشاشة ، ونحن في هذه الحالة نضيف الجواب إليها . وفي النهاية نُدخل حرف (send) s لإرسال

الرسالة أو عدم الإرسال (forget) f . إنهاء العمل ب elm يكون بمثل إنهاء العمل في البرنامج

mail كما ذكرنا في السابق : الحرف (quit) q يحذف البريد الذي قُرئ ، وحرف x لا يَحذف البريد

، على أي حال يسألنا elm إذا أردنا ذلك ، والإجابة تكون بواسطة y أو n . وحذف البريد

بواسطة d يتم كما ذكرنا في شرحنا برنامجَ mail .

الفصل العاشر

 

شبكات الاتصال

 

 

1.10 معلومات عامة

2.10 مكوَّنات الارتباط الإلكتروني ISO/OSI

3.10 مقدمة العنوان الإلكتروني Network Protocol

4.10 العنوان الإلكتروني

5.10 برامج الاتصال الإلكتروني

6.10 برامج أخرى للاتصال البعيد

7.10 برامج متطورة للعمل من خلال الشبكات

8.10 الشبكة العالمية إنترنت Internet

الفصل العاشر

شبكات الاتصال

 

_

 

_

 

 

_

الشكل 63

 

 

1.10 معلومات عامة

 

        في السنوات الأخيرة ازدادت أهمية شبكات الاتصال network المستخدِمة لربط أنظمة

الحاسوب ، لكونها أداة جيدة للاستفادة من ارتباط الحواسب المتواجدة لدى الأشخاص والشركات

والمؤسسات ، وللاستفادة أيضاً من المعلومات الموزعة لديهم ، وللاستعمال التجاري والصناعي

لربط الفروع العديدة للشركات الكبيرة ، ولتكون المعلومات المركزية دائماً في متناول اليد .

وهناك عدة أنواع من وصلات الارتباط adapter ، نذكر منها: Ethernet و Arcnet و Token-Ring-

Adapter.

 

        وهناك نوعان من الشبكات LAN و WAN :

 

LAN = local area network          الشبكة المحلية ، وهي شبكة ارتباط محلي، أي أن الأجهزة

المرتبطة تتواجد في مكان واحد (في عمارة أو مكتب ...إلخ) . ومن أكثرها انتشاراً الشبكة

الدائرية Token Ring ، أو المستقيمة  Ethernet  ، أو المتشعبة Arcnet . وإذا رُبِطَت إحدى

هذه الشبكات بشبكات بعيدة المكان بواسطة خط الهاتف أوخطوط أُخرى خاصة بهذا المجال ، فإنها

تصبح شبكاتٍ بعيدةَ المدى ، تربط المدن والبلاد والقارات وتسمى :

 

 wide erea  network= WAN

 

_

الشبكة بعيدة المدى WAN

 

        من ميزات الشبكات : استعمال الطابعة من قبل عدد من المستخدِمين الموجودين في مواقع

مختلفة ، وإرسال البريد الإلكتروني في ثوان ¡ وإصلاح العطل في أحد البرامج دون الذهاب إلى

موقع الحاسوب ، واستخدام المعلومات الجماعية ، وتبادل المعلومات من قِبل الجامعات ،

والمؤسسات العلمية،  والصحفية ، والصناعية ، والإدارية ، والعسكرية ...إلخ .

 

        وبواسطة الاشتراك في الشبكة العالمية internet ¡ نستطيع الحصول على المعلومات من

بنوك المعلومات الموجودة في جميع أنحاء العالم خلال لحظات ، بدل إرسالها أواستعادتها

بواسطة البريد العادي ، الذي يستغرق أياماً أو أسابيعَ .

 

        وإرسال المعلومات بواسطة الشبكة يتم غالباً بالطرد (رزمة) . وتُنقل الطرود عبر

الشبكات بواسطة العنوان الإلكتروني (adress) ¡ الذي يحتوي عناوين المُرسِل والمُرسَل إليه .

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

2.10  مكونات الارتباط الإلكتروني ISO/OSI

 

        هناك معايير متفق عليها عالمياً لنقل المعلومات عبر الشبكات ، وضعتها المؤسسة

العالمية للمعايير والمقاييس   = ISO Internatioal Standards Organisation  ، واسم هذا 

المعيار OSI = Open System Interconnection  . والمقصود من ذلك هو الإشارة إلى مستويات أو

طبقات متعارف عليها لنقل المعلومات عبر الشبكات .

 

        وهذه المستويات لها وظائف مختلفة ، وسنذكرالمستويات (الطبقات) هنا من الأسفل إلى

الأعلى :

 

  المستوى الطبيعي            physical layer ويشار به إلى نوعية الأسلاك        

                        والخطوط وحجم الطرد وفحص الأغلاط أثناء                         

        نقل المعلومات Hardware=

 

  المستوى الشبكي            network layer ويهتم بنقل الطرود من المُرسِل إلى          

                المُرسَـل إليه ، واختيار الطريق المناسب للوصول                          

        إلى الهدف = Software

 

  مستوى العمليات             processing layer تحليل وإظهار المعلومات          

                        Software=

        كانت هذه لمحةً عن مستويات نقل المعلومات فقط . أما شرحها شرحاً وافياً ، فيحتاج

كتاباً كاملاً ،  لذلك نكتفي بهذاالقدر .

 

3.10  مقدمة العنوان الإلكتروني Network Protocol

 

        لقداعتمد نظام يونيكس على العنوان الإلكتروني الذي يحتوي على المقدمة TCP/IP

protocol في نقل المعلومات بين المطراف والحاسوب . ونستطيع تشبيه المقدمة TCP/IP  بغلاف

رسالة البريد العادية ، المتعارف عليه من قِبل مؤسسات البريد في العالم ، بأن يكون مربعاً

أو مستطيلاً تلصق عليه الطوابع ، و يوضع العنوانُ ، وعنوان المُرسِل في مكان معين ...إلخ .

 

        وهنا توضيح للأحرف TCP/IP:

TCP   =  Transmission Control Protocol

IP             =  Internet Protocol

 

        وأنظمة يونيكس تحتوي البرامج الخاصة بنقل المعلومات بواسطة هذه المقدمة TCP/IP .

ويوجد أيضاً عدد من المقدمات لنقل المعلومات عبر الشبكات ، ومنها :

 

IPX/SPX   Novell Network Protocol

SNA     Systems Network Architecture from IBM

LAT  Local Aerea Transport

SNMP  Simple Management Network Protocol

CSMA/CD   Carrier sense multiple                                              cess/collision

detection

                        for Ethernet Adapter

TPP   Token Passing Protocol (for Arcnet and                   Token-Ring)

SLIP  Serial Line Internet Protocol

UUCP  Unix - to - Unix - Copy

 

        ملاحظة : UUCP نظام قديم لنقل المعلومات مابين الأجهزة في نظام يونيكس ، وهو لايزال

مستعملاً في بعض الشبكات الخاصة . وتستعمل الأَخرى في الشبكات مختلفة التصنيع والاستعمال .

 

4.10 العنوان الإلكتروني

 

        عناوين الأنظمة المتعارف عليها:

 

        لكل حاسوب عنوان إلكتروني متعارف عليه مكون من Byte 4 ، ويكون على هذا الشكل:

180.70.40.16  ،  وكل Byte  يكون مفصولاً بنقطة . وهذه العناوين قابلةٌ للتغيير ، بعكس

الوصيلة (Adapter) التي تُستعمل لربط الأجهزة المختلفة مع الحاسوب والتي لا يُغير عنوانها .

        وللعمل عبر الشبكة العالمية Internet نحتاج إلى عنوان متعارف عليه من قِبل إدارة

هذه الشبكة في الولايات المتحدة . ونحصل عليه من هناك بواسطة طلب يُقدم لهذه المؤسسة ...

 

        العنوان أو رقم الشبكة في نظام الشبكة العالمية Internet :

 

        جميع الأرقام الموزعة على المشتركين تتكَون من Byte 4  ثابتة المعنى ، ويختلف

الترقيم حسب الجهة الحاصلة عليها. ومن أهم هذه الأرقام ال Byte الأول . وتتوزع كالتالي :

 

        من 1 إلى 126 (001.00.00.00) إلى (126.00.00.00) توضح الجهة المعنية ، مثل NASA

وكالة الفضاء الأمريكية ، أو وزارة الدفاع ، أو أي مؤسسة في الولايات المتحدة ...إلخ .

والأرقام الثلاثة التابعة 00.00.00  تكون حرةَ الترقيم من قِبل تلك المؤسسة .

 

        الأرقام من 128.01.00.00 إلى 191.99.00.00 موزعة على الشركات ، والمؤسسات الأخرى

الكبرى ، كالجامعات . والشركات الصناعية الكبرى ، مثل (General Motors) GM ...إلخ . وهذا

العنوان مكون من (128.15.??.?? ) Byte 2 ¡ والأرقامُ التابعة  Byte 2 الأخرى (??.??) تكون

حرة الترقيم من قِبل تلك الجهة .

 

        الرقم من 192.01.01.00 إلى 999.99.99.00 مخصص للشركات الصغيرة والأشخاص ، ويتكون

من  Byte 3¡ والرقم (Byte) الأخير ??  (192.12.4.??)  يكون حُرَّ الترقيم من قِبل تلك الجهة .

 

        أما الرقم 127.0.0.1 0 - وهو رقم غير موزع - فمعناه الحاسوب المتواجد ، أي الذي

نعمل به في حال عدم الاشتراك في الشبكة العالمية ... ولدى العمل بواسطة شبكة (LAN) داخليةٍ

، يكون هذا الرقم هو عنوانَ النظام . وفي حال عدم الاشتراك في الشبكة العالمية ،  نستطيع أن

نُكَون الأرقام كما نريد ، دون الانتباه إلى الترقيم المُنظم .

 

        في الملف /etc/hosts  نستطيع وضع الأرقام الشبكية adress ¡ وأسماء الحواسب

systemname التابعة لتسهيل العمل . وباستطاعتنا - بعد تنظيم ذلك ، وفي حال الاتصال بهذه

الحواسب البعيدة - إدخالُ الأسماء فقط ، ويجب أولا أن ننظم محتويات هذا الملف .  ومحتوى

/est/hosts يكون  على النحو التالي (مثال) :

 

180.70.40.01              gnom  master

180.70.40.02              snoopy

180.70.40.16              kaktus

180.70.074.4              daphne

192.12.04.02              abakus

112.11.15.44              nasausa

 

5.10  برامج الاتصال الإلكتروني

 

        والاتصال بالحواسب البعيدة يكون بواسطة البرنامج telnet أو ftp على النحو التالي :

 

        أولاً telnet :

 

$ telnet abakus

Trying  192.12 4.2. . .                      محاولة الاتصال

Connected to 192.12.4.2             الاتصال حصل الآن

Escape Character is '^'['.            (Ctrl-T) -  Ctrl>-[ علامة الانقطاع

SunOs UNIX  (abakus)             نظام التشغيل واسم الحاسوب

login:ziad                                     الدخول

password                                     كلمة المرور

Last login: Thu Mar 15 12:20 from 180.70.40.2   معلومات

. . .                                  (Bourne-Shell) يشغل الغلاف هناك

abakus$     

 

        «192.12.4.2 رقم abakusهنا نكون قد وصلنا إلى الحاسوب»

 

        ونستطيع الآن العمل "هناك" في ذلك الحاسوب كأنما نعمل على حاسوبنا "هنا" ، حتى لو

كان الحاسوب موجوداً في الولايات المتحدة ، أو أوروبا ، أو أي مكان في العالم .

 

        ونخرج من الارتباط هكذا :

 

$ logout

connection closed by foreign host.

 

        ونحن لا نستطيع نقل المعلومات من حاسوب الى آخر بواسطة telnet ¡ لذلك نستعمل

البرنامج ftp لنقل الملفات عبر الشبكة . ولدى العمل بواسطة ftp لا نستعمل أحد الأغلفة

(Shell) هناك ، لأن ftp يقوم بالعمل على الحاسوب المُتصَل به كغلاف ، ويظهر المحث بشكل ftp>

بدلا من $ .

 

        الدخول إلى الحاسوب البعيد :

 

$ ftp  abakus

Connected to abakus.

220 abakus FTP server ready.

Name Cabakus:ziad):ziad                           ziad هنا ندخل الاسم

33  password required required for ziad

password:                                            هنا ندخل كلمة المرور

 

230 User ziad  logged in

ftp>                                                  هنا يظهر المحث .

 

الخروج من الحاسوب البعيد :

 

ftp> quit                              quit الخروج بواسطة

221   Goodbye

$_                                    محث غلاف حاسوبنا

 

        سرد الملفات والأدلة بواسطة ftp :

 

        بعد الدخول بواسطة ftp إلى الحاسوب البعيد (كما ذكرنا في الأعلى) ، نستطيع استعمال

أوامر النظام وكأننا نعمل هناك .

 

ftp> pwd

257 "/usr/meikel" is current directory.

ftp> dir

200 PORT command successfu1.

150 Opening ASCII mode data connection for /bin/ls.

total 8

-rwx------     1      meikel user   126   Mar   31     07:59 .cshrc

-rw-------     1      meikel user   405   Mar   31     07:59 .login

drwxr-xr-x    2      meikel user   384   Mar   31     08:14 c

drwx------     2      meikel user   384   Mar   31     07:59 Mail

 

226 Transfer complete.

304 bytes received in 0.68 seconds (o.44 kbytes/s)

ftp> ls

200 PORT commandsuccessful.

150 Opening ASCII mode data connection for file list

.cshrc

.login

Mail

c

226 Transfer complete.

25 bytes received in 0.02 seconds (1.22 kbytes/s)

ftp> cd c

250 CWD command successful.

ftp> dir *.c

200 PORT command successful.

150 Opening ASCII mode data connection for /bin/ls.

-rw-r--r--     1      meikel user   10602       Mar   31     08:01 adr.c

226 Transfer comlete.

remote: *.c

60 bytes received in 0.12 seconds ( 0.49 kbytes/s )

ftp>

الشكل 64

 

        بعد إدخال أي أمر يُجيب البرنامج  ، ويعلمنا عن كل تقدم في عملية الإرسال والاستقبال

.

 

        نقل الملفات بين الحواسب بواسطة ftp :

 

        بواسطة الأوامر get (اجلب) و put (أرسل أو انسخ) نستطيع جلب وإرسال الملفات من

وإلى الحواسب بواسطة الشبكات . وإذا أردنا جلب أو إرسال عدة ملفات نستعمل الأوامر mget و

mput ، وبواسطتها نستطيع استعمال النجمة * وعلامة الاستفهام ? كبدائل لأسماء الملفات كما

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

الحث بواسطة الأمر prompt off ، وإعادته الى عمله بواسطة prompt on . وحالة حث الإثبات هذه

تنفع في تجنب نسخ أحد الملفات التي تحمل الاسم نفسه .

 

        نوعية نقل الملفات :

 

يتم النقل بالحروف (ASCII) ¡ وهي الحالة الطبيعية للنقل ، وفيها ينتهي كل سطر من الملف

بالإشارة (ASCII 10)  Linefeed (انظر ASCII-Code) ¡ وللمطابقة يُحَوِّل يونيكس كل (Linefeed

Carriae Return) إلى Linefeed فقط ، وبهذه تكون المطابقة تامة لجميع الملفات المنقولة .

وهذا يختلف عن حالة السطور في نظام MS-DOS ، الذي ينهي السطور بالإشارة ASCII 13 ، وهي

Linfeed Carriag Return .

 

        في حال نقل الملفات غير ASCII ، أي نقل الملفات البينرية (Binaryfiles) (برامج أو

ملفات مكثفة أو صور محولة إلى رموز) ، يجب ضبط وتأكيد هذه الحالة بواسطة إدخال الأمرbinary

 أو bin ، وبعد ذلك يكون برنامج النقل ftp في حالة نقل بينري . ونستطيع تغيير هذه الحالة

إلى حالة نقل الحروف ASCII بواسطة الأمر ascii . ويجب الانتباه إلى التغيير مابين الحالتين

binary و ascii قبل القيام بعملية النقل .

 

        ونحن ننصح بالأخذ بحالة binary للعمل في برنامج ftp ¡  وباستعمال حالة ascii لنقل

الرسائل والنصوص فقط .

 

        أثناء نقل الطرود (packet) نستطيع استعمال الرمز (#) لرؤية نهاية نقل كل طرد من

الطرود الإلكترونية . ونُدخل هذه الحالة بواسطة hash on ، ونحذفها بواسطة hash off ، وهذه

العملية تسمى hash marks .

 

        وهنا نقدم بعض الأمثلة لنقل الملفات والطرود :

 

ftp> dir

200 PORT command successful.

150 Opening ASCII mode data connection for /binls.

total 76

-rwr-xr-x     1      meikel user   55642       Mar   31     08:10 adr

-rw--r--       1      meikel user   10602       Mar   31     08:01 adr.c

-rw-r--r--     1      meikel user   887   Mar   31     08:14 adr.dat

226 Transfer complete.

190 bytes received in 0.44 seconds ( 0.42 kbytes/s )

ftp> bin

200 Type set to I.

ftp> get adr.c

200 PORT command successful.

150 Opening BINARY mode data connection for adr.c ( 10602 bytes ).

226 Transfer complete.

local: adr.c remote: adr.c

10602 bytees received in 0.04 seconds ( 265.05 kbytes/s )

ftp>

الشكل 65

 

        وهنا استعملنا الأمر get من خلال حاسوب بعيد ، ونقلنا الملف adr.c بعد أن حولنا

حالة النقل إلى حالة binary ¡ بواسطة bin .

 

ftp> mget *

mget adr? y

200 PORT command successful.

150 Opening BINARY mode data connection for adr ( 55642 bytes )

226 Transfer complete.

local: adr

55642 bytes received in 0.14 seconds ( 388.13 kbytes/s )

mget adr.c? n

mget adr.dat? y

200 PORT command successful.

150 Opening BINARY mode data connection for adr.dat ( 887 Bytes ).

226 Transfer complete.

local: adr. dat remote: adr.dat

887 bytes received in 0.04 seconds ( 21.66 kbytes/s )

ftp>_

 

الشكل 66

        وهنا ننقل جميع ملفات الدليل بواسطة * mget . والبرنامج يسألنا إذا أردنا النقل

أم لا، ونستطيع الإجابة :  y (yes) أو n (no)  ¡ لأننا لم نستعمل prompt off لإيقاف التأكيد ،

ونُدخل n إذا لم نرد نقل الملف adr.c ، وغير ذلك ندخل y نعم .

 

ftp> propt off

Interactive mode off.

ftp> mget *

200 PORT command successful.

150 Opening BINARY mode data connection for adr ( 55642 bytes ).

226 Transfer complete.

local: adr remote: adr

55642 bytes receeived in 0.26 secnds ( 208.99 kbytes/s )

200 PORT command successful.

150 Opening BINARY mode data connection for adr.c ( 10602 bytes/s ).

226 Transfer complete.

local: adr.c remote: adr.c

10602 bytes received in 0.02 seconds ( 517.68 kbytes/s )

200 PORT command successful.

150 Opening BINARY mode data connetion for adr.dat ( 887 bytes ).

226 Transfer complete.

local: adr.dat remote: adr.dat

887 bytes received in 0.08 seconds ( 10.83 kbytes/s )

ftp>

الشكل 67

        وهنا الحالة مع استعمال prompt off دون تأكيد النقل ب (نعم أو لا) . وتُنقل الملفات

دون تأكيد .

 

ftp< hash on

Hash mark printing on ( 4096 bytes/hash mark ).

ftp> get adr

200 PORT command successful.

150 Opening BINARY mode data connection for adr ( 55642 bytes ).

#######

226 Transfer complete.

local: adr remote: adr

55642 bytes received in 0.24 seconds ( 226.41 kbytes/s )

ftp>

الشكل 68

        وهنا (في الأعلى) حالة النقل باستعمال hash on لإدخال # بعد كل طرد ،  وبذلك نعرف

عدد الطرود المرسلة .

 

        في الحالات السابقة استعملنا get  و   mgetلإحضار الطرود من الحاسوب البعيد .

ونستطيع إرسال الطرود بواسطة put و mput ¡ وهذه تعمل مثل get و mget ¡ ولكن بالعكس ، أي

نُرسل من حاسوبنا إلى الحاسوب البعيد ...إلخ .

 

        ملاحظة: أثناء استعمالنا لبرنامج ftp يجب التأكد من حقوق العمل في الملفات (قراءة

وكتابة و استعمال) قبل نقلها.

 

        بواسطة البرنامج ftp لانستطيع إظهار محتويات الملفات البعيدة على شاشتنا، ولكنَّ

هناك طريقةً استثنائيةً عبر الأنبوب (pipeline) لإظهار المحتويات ، وذلك بواسطة الأوامر more 

وwc  و cat ¡ أو أي أمر آخر نستعمله بعد إشارة الأنبوب (|) مباشرة .

 

        وهنا مثل لاستعمال wc :

ftp> get adr.c |wc

200 PORT command successfil.

150 Opening ASCII mode data connection for adr.c ( 10602 bytes ).

        533   865   10602

226 Transfer complete.

local: |wc remote: adr.c

11135 bytes received in 0.90 seconds ( 12.08 kbytes/s )

ftp>_

 

الشكل 69

 

        هنا أدخلنا البرنامج wc بعد إشارة الأنبوب مباشرةً لتعداد السطور والكلمات والأحرف ،

ولإظهارها على شاشتنا من الملف adr.c الموجود بعيداً...

 

        وأثناء عملنا في البرنامج ftp نستطيع حذف أحد الملفات الموجودة في الحاسوب البعيد

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

 

ftp> delete  adr.dat

250 DELE  command successful.

ftp>

 

        ولتغيير الأدلة نستعمل lcd بدل cd .

 

ftp> lcd tmp

Local directory now  /home/ziad/tmp

ftp>

 

        ونستطيع استعمال أوامر الغلاف بإدخال ! قبل الأمر :

 

ftp>!date     

ftp>!ls  -al           

ftp>!more filename

 

        ونستطيع إنهاء عمل ftp بإدخال quit ¡ وبهذا ننهي أيضاً الاتصال بالحاسوب البعيد .

وإدخالُ close ينهي الاتصال فقط ، وبواسطة open واسم الحاسوب البعيد نعيد الاتصال ثانيةً .

 

        في حال نقل كميات كبيرة من المعلومات والملفات والتي تستغرق ساعات كثيرة نستعمل

ftp خلفياً ، أي دون ظهور العملية على الشاشة أثناء العمل ، وهنا يجب الانتباه إلى أن

الدخول إلى الحاسوب البعيد يحتاج إلى اسم المستخدِم وكلمة المرور أيضاً ، وذلك في حالة

Login هناك . ويجب إدخال الإضافات  nو i  للحد من الأسئلة  أثناء نقل المعلومات (prompt off

= i ) ¡ وللحيلولة دون الدخول الطبيعي login بواسطة (no login = n) . وفي حالة النقل

الخلفي نحتاج إلى الأوامر بالإضافة إلى أسماء الملفات ...إلخ . ونسجل هذه الأوامر والإيعازات

في ملف خاص ، ونُدخِل هذا الملف بواسطة > إلى الأمر ftp ، أي أنَّ الأوامرَ تأتي من هذا الملف .

ويجب  الحرص على أن نكتب في آخر سطر من هذا الملف الأمر quit ، لإنهاء العمل الخلفي ل ftp

بعد إنجاز الأعمال ، وخلاف ذلك يظل ftp عاملاً إلى الأبد كعملية خلفية ، أو أن يُحذف بواسطة

kill لاحقاً .

 

        وإليك طريقة إدخال هذا الأمر للعمل في الخفاء :

 

$ ftp -in jordsys < inputfile  &     «الملف الذي يحتوي الأوامر inputfile»

[1] 4635

$

 

        ومحتوى inputfile يكون مثلاً هكذا :

 

user ziad password

bin hash off

mget *

quit

 

        ويعمل البرنامج ftp في الخفاء ، وينفذ هذه الأوامر.

 

        في حال استخدام internet نستعمل اسم المستخدِم الوهمي ftp (anonymous) ¡ لنسخ

وإحضار الملفات من الحواسب البعيدة . وهذه الملفات تكون - عادة - مجردة من القيود ، أي أنَّ

بالإمكان نسخَها وإحضارَها للاستعمال العام ، مثل البريد ، أو برامج  Shareware ، أو Public

Domain Software  المجانية ، والتي نحصل عليها دون رسوم استعمال . ولذلك يجب استخدام أول

سطر من inputfile  ، باستعمال اسم ذلك  المستخدِم الوهمي ، ككلمة مرور هناك :

 

user ftp ftp

bin

get adr.c

quit

 

        واسم المستخدِم هناك يكون ftp ¡ وهذا متعارف عليه للاستعمال العام .

 

6.10  برامج أخرى للاتصال البعيد

 

        بواسطة البرامج mail¡ elm¡ talk نستطيع الاتصال بالعاملين على الحواسب البعيدة ،

بإدخال اسم المستخدِم ¡ والحرف @، واسم الحاسوب بعد الأمر ، وهذا معناه ziad at jordsys

(ziad@jordsys) ¡ أي المستخدِم ziad الموجود لدى الحاسوب jordsys .

 

$ elm ziad@jordsys

        أو

$ mail  ziad@jordsys

 

$ mail  ziad@jordsys 

 

Subject: catalogue of your range

Dear Ziad

Your representative¡Mr smith¡ visited me recently¡ and

showed me same gamples of your new lines.

I should be grateful if you would send me a catalogue

 of your range of christmas toys...............................

 

Yours faithfully ¡ Mazen Yousef

Ctrl-D                       

Cc: mazen 

 

        ونحن لاننصح باستعمال talk ¡ لأننا نلاقي كثيراً من المتاعب أثناء العمل بواسطته .

 

        بواسطة البرامج finger نستطيع إظهار المستخدِمين الذين يعملون على حاسوبنا ،

والذين قد دخلوا إليه بواسطة الشبكة .

 

$ finger

Login  Name         TTY   Idle   When Where

ziad            Ziad Yousef   co             Thu 10:18

karl           Karl Schmidt p3             Thu 11:33     gnom

duffy          Sven Meier   p2      0:05  Thu 12:36     abakus

$

الشكل 70

 

        وهنا يظهر الاسم الإلكتروني لكل مستخدِم ، واسمه الطبيعي الموجود في الملف

/etc/passwd ¡ واسم المطراف ، والوقت (when) الذي لم يعمل به ، واسم الحاسوب ، ومن أين هو

قادم . وفي حالة عدم وجود اسم الحاسوب ، يكون المستخدِم موجوداً في هذا الحاسوب الذي خرجت

منه المعلومات .

 

        وإذا أردنا الحصول على معلومات مفصلة عن أحد المستخدِمين ندخِل اسمه بعد الأمر :

$ finger karl

Login mame: karl

Directory: /u/karl

On since Fed 20 11:33:12  on ttyp3 at snoopy from gnom

No plan.

الشكل 71

        ويظهر هنا الاسم login-name ¡ والدليل الذي يعمل به ، وآخر دخول إلى النظام ، ومتى

قُرئ البريد ، ومحتوى الملف plan الذي يحتوي على معلومات مفصلة عن المستخدِم المذكور ، وهذا

الملف يكون موجوداً في دليل المستخدِم الخاص ، أو يظهر no plan في حالة عدم وجوده .

 

        ونستطيع الحصول على معلومات خاصة عن مستخدِمي الحواسب البعيدة بواسطة finger ¡

بإدخال الاسم واسم الحاسوب البعيد .

 

$ finger lutz@kaktus

[180.70.40.16]

Login name: lutz                     In real life: Lutz Muller

Directory: /u/lutz                            Shell: /bin/csh

Last login: Feb 19 11:02:12 on ttyp2 from abakus

N0 plan.

الشكل 72

        ويستخدم اسم الحاسوب فقط لإظهار العاملين هناك :

$ finger @kaktus

Login  Name         TTY   Idle    Whrn  Where

conny Corinna kaiser       co             Thi 10:38

af              Ansrim Freitag       p3      0:12 Thu 11:05 snoopy

الشكل 73

 

        ومن المتوقع أن يحصل الاتصال ، ويُظهِرُ الإنذار أنَّ الاتصال قد رُفض connection refused 

¡ لأن مدير النظام هناك قد مَنَعَ الدخول .

 

7.10  برامج متطورة للعمل من خلال الشبكات

 

        توجد برامج فائقة القدرة للعمل من خلال الشبكات ،  أنتجتها Berkeley University¡

California جامعة بركلي في كاليفورنيا في الولايات المتحدة ، وهي تغني (في العمل من خلال

الشبكات ) عن البرنامجين ftp و telnet .

 

        البرنامج rlogin بديل لبرنامج telnet ، وهو يعمل مابين أنظمة يونيكس فقط . وإذا

اضطررنا للعمل بواسطة نظام التشغيل  MS-DOS  ، أو أي نظامٍ آخرَ ،  من خلال التحويل

emulation ، فيستحسن استعمال telnet .

 

        ولكي ندخل إلى الحواسب البعيدة بواسطة rlogin ¡ نُدخل اسم أو رقم الحاسوب البعيد

(أنظر في قسم telnet كيفية الدخول) ، ويأخذ برنامج rlogin اسم وكلمة مرور الشخص الداخل

إلى الحاسوب البعيد من الملف passwd من حاسوب المستخدِم هناك . ولسنا بحاجة إلى إدخال الاسم

، أوكلمة المرور في حال تطابق الاسم وكلمة المرور الموجودة هنا وهناك . وإذا عملنا باسم

آخر إضافيٍّ في الحاسوب البعيد فيجب إدخاله بواسطة الإضافة -L ، ويتبعها الاسم الآخر ، ورقمُ

الحاسوب البعيد في الشبكة :

 

$ rlogin -L ziad  180.70.40.16

 

ونستطيع إلغاء السؤال عن كلمة المرور بأن ندخل أسماء الحواسب البعيدة ، وأسماءَ الأشخاص

القادمين منها في الملف .rlhosts الذي يجب وجوده في الدليل الخاص لكل مستخدِم

(Homedirectory) .

 

        ومحتوى هذا الملف يكون مثلاً هكذا :

 

        abakus        ziad          

        abakus        mazen

        jordsys        ziad           

        kaktus        mazen

 

ومحتوى الملف يُفسَّر هكذا :

 

        إذا كان  ziad هو القادم من الحاسوب abakus ¡ فإنه يحق له الدخول باسم مالك الملف

، وإذا كان القادم من الحاسوب abakus اسمه mazen ¡ فإنه يحق له الدخول باسم مالك الملف

أيضاً . وإذا كان القادم من الحاسوب jordsys اسمه ziad ¡ فإنه يحق له الدخول باسم مالك

الملف . وإذا كان القادم من الحاسوب kaktus اسمه mazen ، فإنه يحق له الدخول باسم مالك

الملف .  وهنا يجب الحرص على سرية الأسماء ، لأنَّ من الممكن دخولَ غرباء إلى النظام في حال

معرفة أحد هذه الأسماء ، لذا يجب الحذر قبل عمل الملفات .rhosts و /etc/hosts.equiv .

 

وهنا مثال للدخول بالطريقة التي ذكرناها في الأعلى :

 

$ rlogin abakus                      abakusإلى  jordsys ندخل من

Password:

Last login: Thu Fed 20 13:18:16 from 180.70.40.2

abakus$                              abakusنحن الآن في الحاسوب

..........                                     نقوم بالعمل المعتاد

abakus$ logout                      abakus خرجنا من الحاسوب

Closed connection.

$                                      jordsys نحن الآن في الحاسوب

الشكل 74

        وعلامة الخروج من الاتصال أوالانقطاع escape تكون في هذا البرنامج  اشارة ~  تلحقها

نقطه  ~. .

البرنامجان   rsh أو rcmd:

 

        البرنامج rsh  يُستخدم لإدخال أمر واحد فقط إلى الحاسوب البعيد ، كما ذكرنا في

الأعلى ¡ ولكن بشرط الدخول بواسطة محتويات الملف rhosts  وبدون كلمة مرور .

 

والقيام يإدخال الأمر للحاسوب البعيد يتم هكذا :

$ rsh abakus date      

 

        ونطلب هنا التاريخ date من الحاسوب البعيد abakus ¡ ونستطيع تحويل الإخراج إلى ملف

للاحتفاظ به .

 

        إخراج المعلومات إلى الملف filename في حاسوبنا :

 

$ rsh abakus date >filename

 

        إخراج المعلومات إلى الملف filename هناك

 

$ rsh abakus date " >" filename

 

        وهكذا نستطيع استعمال جميع أوامر النظام الأخرى التي عرفناها بواسطة rsh .

والبرنامج rcmd له ذات المفعول .

 

                 وهناك أيضاً البرنامج rcp الذي يعمل كالبرنامج ftp ¡ ولكنه يحتاج للدخول

بالمواصفات نفسها كما هو الحال في البرنامج rsh (أنظر في الأعلى) . ومن ميزات هذا البرنامج

نسخ الملفات مثل cp (copy) من خلال الشبكة . من وإلى الحاسوب البعيد :

 

$ rcp text abakus:tmp/text

 

        اطبع أو انسخ الملف text من حاسوبنا إلى الملف text ¡ في الدليل /tmp¡ في الحاسوب

abakus البعيد.

 

        البرنامجان   rwho  و ruptime :

 

        وبواسطتهما نستطيع الحصول على المعلومات المتعلقة بالمستخدِمين في الشبكات

المرتبطة ببعضها .

 

$ rwho

ziad    jordsys:ttyp0         Feb 21 19:14

karl           jordsys:console              Feb 21 19:05

conny snoopy:ttyp2         Feb 21 17:12

af              kaktus:ttyp0         Feb 21 18:50

bertram       gnom:ttyp0           Feb 21 18:43

الشكل 75

 

        البرنامج ruptime يُظهر لنا الحواسبَ المرتبطةَ في الشبكة، وعددَ المستخدِمين ،

والأوقاتَ ، وكثافةَ العمل التي تظهر برقم (أقل من 1.00 عمل قليل، أكثر من 1.00 عمل كثير):

 

 

$ ruptime

snoopy        up 34+03:42¡ 2 user¡        load 2.16¡ 2.03¡ 2.00

kaktus        up      9+02:12¡    2 user load 2.50¡ 2.28¡ 2.17

gnom  up 11+08:22¡ 1 user¡        load 0.80¡ 0.90¡ 0.92

zarkasys      down                          غير عامل حالياً ولكن مسجل

الشكل 76

 

8.10 الشبكة العالمية إنترنت Internet

 

        إن الشبكة internet هي اتحاد عدة شبكات داخلية وخارجية في العالم (العالم

الصناعي) ، وتعمل بواسطة البروتوكول TCP/IP الذي شرحنا عنه سابقاً .

 

        وقد كانت هذه الشبكة مشروعاً للبحوث والاتصالات تابعاً للإدارة العسكرية في الولايات

المتحدة باسم Defence Advanced Research Projects Agency   (DARPA) ، أُسست في عام 1969

للتوصل إلى طريقة لنقل المعلومات بالطرد للدوائر العسكرية وللمؤسسات العلمية في الولايات

المتحدة ، وكانت النتيجة الشبكة ARPANET التي ربطت عدداً من الحواسب ، وكانت تعمل بواسطة

بروتكول تطور منه  TCP/IP. ومنذ عام 1980 بدأ العمل بواسطة TCP/IP ومازال مستخدَماً إلى

يومنا هذا . وفي عام 1984 فُصل القسم العسكري عن ARPANET ، وسمي  MILNET. وما تبقى من

ارتباط سُميَ internet ، وبعد ذلك تم وصل شبكات من دول أخرى إلى هذه الرابطة .

 

        وبواسطة الوصيلة (adapter) ¡ وبرامج الارتباط emulation ¡ تُربط الحواسب مختلفة

نظام التشغيل (مثل MS-DOS و APPEL) والمرتبطة بإحدى شبكات الحواسب (Ethernet أو Token-

Ring) .

 

        وأكثر الدول المستعملة لشبكة internet هي الولايات المتحدة ، وكندا ، وأوروبا (

ألمانيا ، وبريطانيا ، وهولندا ، وفرنسا ، وإيطاليا ، وإسبانيا ، والدول الاسكندنافية ...

إلخ) ، وهناك دول أخرى في آسيا وأميركا الجنوبية و أستراليا ربطت بالشبكة internet .

 

        والمؤسسات المرتبطة تكون في أغلب الأحيان جامعاتٍ ومؤسساتِ بحوثٍ وشركاتٍ كبرى ،

وبخاصةٍ شركاتِ الكومبيوتر، ووكالة الفضاء NASA ، وبعض المشتركين الصغار . ومن المتوقع

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

خاص ، وذلك مشابه لشبكة الهاتف العالمية ، والتي تضم في رقمها ، رقم الدولة و رقم المنطقة

، و الرقم الخاص (رقم الشبكةالاردنية للهاتف دولياً= 00962 عمان=6 ورقم الهاتف 600000 ،

وتطلب من الدول الأخرى هكذا 009626660000 للاتصال بمشترك الهاتف) . وأرقامُ شبكة الحاسوب

internet تكون على هذا الشكل 180.70.40.16 أي 180 رقم الدولة ، أو الجهة ، و 70 الرقم

الداخلي الأول لهذه الجهة ، و 40 الرقم الداخلي الثاني ، و 16 الرقم الداخلي الثالث .

وهناك أيضاً الأسماء الرمزية لهذه الجهات ، مثل: gnom.physik.tu-berlin.de  ، حيث الاسم الأول

هو اسم الحاسوب gnom ،  ثم اسم القسم departement of physic ¡ ثم اسم الجهة Technical

University Berlin ¡ والأحرف الأخيرة تدل على الدولة (de) ¡ وتعني deutschland : ألمانيا -

باللغة الالمانية - وإليك فهرساً بهذه الأسماء :

        at      Austeria              it      Italy

        au     Australia             jp      Japan

        be     Belgium              kr     Suthkorea

        br      Brasili        mx     Mexico

        ca     Kanada               na     Namibia

        ch     Swizerland    nl      Nitherland

        cs      Tchecoslow.  nz      Newseeland

        de     Germany             no     Norway

        dk     Danemark    pl      Poland

        es     Spain          pt      Portugal

        fi      Finnland              pr      Puerto Rico

        fr      France                se     Sweden

        gr      Greece               sg     Singapur

        hk     Hongkong    tn      Tunesia

        hu     Hungaria             tr      Turkia

        ie      Irland         tw     Taiwan

        il       Israel         uk     united kingdom

        in      India                  us     USA (limeted)

        is      Island         za      Suthernafrika

 

        com  USA (commerce)

        edu   USA (university¡education departements)

        gev       USA (US-departements)

        mil        USA (Military)

الشكل 77

 

  والفهرس هذا موجود أو يجب عمله في الملف /etc/hosts مع الأرقام للخطوط ، كعنوان للحواسب

المحبذ الاتصال بها .

 

 

        البريد الإلكتروني بواسطة internet :

 

        من أهم دواعي الاشتراك في internet هو الاتصال الإلكتروني ، أو البريد الإلكتروني

للشبكات العالمية والداخلية المترابطة ، مثل شبكتيْ BITNET ¡ Fidonet ، وشبكاتٍ أُخرى منتشرةٍ

في جميع أنحاء العالم .

 

        فهرس طرق الدخول وأسماء الشبكات :

 

BITNET      <user>@<systemname>.BITNET

                <User>%<Systemname>[email protected]

 

CSNET       <User>@<Systemname>

                <User>%<Systemname>@relay.cs.net

 

JANET       <User>@<Systemname>

                <User>%<Systemname>@nfsnet-relay.ac.uk

 

UUCP <User>@<Systemname>.UUCP

                <User>%<Systemname>@<Gatewy>

                <Gatewy>!<Systemname>!<User>

 

Fidonet <firstname>.<lastname>@p<Point>.f<node>.n<Net>.z<Zone>.fidonet.org

 

Maus <firstname>-<lastname>@<Mailbox>.maus.de

 

Zerberua <User>@<Mailbox>.zer.de

الشكل 78

 

        ولإرسال الأخبار إلى المشتركين في internet ¡ لدينا البرنامجان : mail أو elm ¡

وبواسطتهما نُدخِلُ عنوان المشترك المراد الاتصال به على الشكل التالي :

 

        Username@systemname المسجلة في الشبكة internet

         وفي حالة إرسال المعلومات إلى مشترك عن طريق الموزع المركزي Gateway الذي يشكل

في الوقت نفسه حاسوباً لتوزيع الطرود المعلوماتية datagrams الواردة من شبكة internet ¡

ندخل الأمر كالتالي :

 

$ mail Username%Systemname@Gatway

 

        ويعرف حاسوب التوزيع Gateway ¡ الذي يعمل كساعي البريد العنوانَ الواردَ ، ويرسل

الطرودَ إليه . 

 

        لدى الاشتراك في internet يحصل المشترك على لائحة العناوين ، وهي تشبه فهرس الهاتف

، لتبسيط الاتصال ، وإدخال العنوان الصحيح .

 

        والاشتراكُ في internet له محاسن كثيرة ، مثل الحصول على البرامج المجانية Public

Domain Software ¡ التي تُعرض لالتقاطها ، من خلال اسم مستخدِم عامٍّ ذي اسم وهمي anonymous ¡

وتكون هذه البرامج في أغلب الأحيان موجودة بكتابتها الأصلية source-code في لغة سي . وهناك

أيضاً معلومات أخرى لا تعد ولاتحصى يمكن الحصول عليها ، مثل البحوث العلمية ، وصور الفضاء من

مؤسسة NASA ، والمعلومات ، والاكتشافات العلمية من الجامعات المنتشرة في جميع أنحاء العالم

. وهناك أيضاً الأخبار العالمية التي تُرسَـل إلى مؤسسات الصحافة .

 

        ولا غنى للاختصاصيين في مجال الحاسوب  عن الاشتراك في internet  كمرجع ،  للحصول على

أخبار تطورات الحاسوب ، والاختراعات الجديدة ، وحلِّ مشكلاته الواردة . ونحصل على هذه الأخبار

بواسطة برامج News System وهي rn ¡ nn ¡  trn .

 

        إنَّ كتابة تفاصيل استخدام internet تحتاج إلى كتاب خاص ،  أما كتابنا هذا فيطرح

الفكرة فقط ، ويَتركُ للعامل الجديد  الحصول على معلوماته في هذا المجال بواسطة البحث

المتواصل .

الفصل الحادي عشر

 

النوافذ

 

الفصل الحادي عشر

النوافذ

 

        منذ زمن غير بعيد ¡ بدأ العمل بواسطة شاشات لديها القدرة على إظهار الرسوم

والأشكال والصور ، وتُستخدَم هذه الشاشات للعمل بالنوافذ كمطاريفَ واردةٍ على الشاشة . وهي

تحتاج إلى حواسبَ ذاتِ قدرة عالية ، بسبب حجم المعلومات المُرسَلة والمُستقبَلَةِ للمعالجة ، ولا

يصلح الارتباط بواسطة خط الهاتف لربط هذه الشاشات في الحاسوب . هذا ونحتاج إلى برنامج لعمل

وإدارة هذه الشاشات . وقد أُنتج اخيراً البرنامج  X-windos ، وهو الآن البرنامج  الدارج في

هذا المجال ، ويمكن الحصول عليه مجاناً بحالته الاصلية (source-code) في لغة سي ، لكي يُترجَمَ

إلى لغة الآلة ، ونستطيع الحصول عليه مُتَرجَماً وقابلاً للعمل فوراً،  مقابل رسوم تدفع لشركات

الحواسب .

 

                ونظام X-windows نظام متعدد المهام ، يضع كل مهمة (مجال عمل) في نافذة .

والبرنامج xterm يجهز النافذة كمطراف مستقل من نوع vt100 Terminal ¡ له غلافه الخاص ، ومن

خلال كل نافذة ـ على حدة ـ نستطيع تشغيل البرامج التي تعمل مستقلة .

 

        ونظام X-windows يُشغل بطريقتين :

 

        1-  حالة الدخول login العادية ، ووجود الدليل /usr/bin/x11 أو /usr/x11/bin ¡ 

نُدخل الأمر xinit .

 

        2-  أما في حالة البرنامج xdm ¡ فإنه يعمل تلقائياً من خلال login ، وهي الحالة

المُتبعة في العادة .

 

        والبرنامج (X-windows Display Manager) xdm - الطريقة الثانية أعلاه - ، يُظهر لنا

نافذة دون إطار ، وبعد ذلك نُدخل الأمر twm أو mwm للعمل في الخلف، لكي يكون مستطاعاً عملُ

نوافذَ أُخرى بواسطة نافذة xterm.

 

_EMBED MSDraw   \* mergeformat___

 

        ويمكن عمل كل ذلك في البداية ، كما يُمكنُ إدخال هذه الأوامر في الملف (.xinitrc)

الموجود في دليل المستخدِم (user) . ويجب تغيير الملف (xsession.) لأن البرنامج xdm يقرؤه 

وينفذ موجوداته ، ويكون شكل هذا الملف كالتالي :

 

export  DISPLAY;  DISPLAY='hostname':0

mwm  &

xsetroot  -bitmap  /usr/x11/bitmaps/hlines2

xclock  -geometry  +0+  &

xman  -geometry  +850+0>&

xbiff  -geometry  +1030+5&

xload  -geometry  300x120+40+635  &

xterm  -n  'hostname'  -title  'hostname'  -fn  99x15  -geometry  80x25+0+180&

xterm  -n  'hostname'  -title  'hostname'   -geommetry  -92-12  &

emacs  -fn  "*courier-bold-r*14*"  -geoometry  81x42+542+120  &

xhost  +

rsh kaktus -n /usr/x11/bin/xterm -display snopy:0.0 -n polyxena -title polyxena -

iconic  &

rsh kaktus -n /usr/x11/bin/xbiff  -geometry +1090+5  -display  snopy:0.0  &

xterm  -geometry  80x10+200+0  -fn  7x13  -title   console@'hostname' -C

الشكل 79

        شرح :

       

        أولاُ : يُشغَّلُ الباحثُ mwm & ¡ ثم الأمرُ xsetroot الذي يعمل خلفية النافذة ، ثم تُشغل

الساعة (xclock) ، والمرجعُ (xman) ، وصندوقُ البريد (xbiff) ، وتُشغَّل شدة عمل الحاسوب

(xload) ، ثم تُجهَز نافذتا xterm ، ويُشغَّلُ  المحرر emacs ، وبواسطة geometry يُسجَّل حجمُ

النافذة ، ومكانُ وضعها في النافذة الأساسية . ومن خلال الأمر rsh نفتح نافذة للعمل في xbiff

، و xterm في الحاسوب kaktus . وبواسطة -display snopy نشير إلى عمل النوافذ في الحاسوب

snopy . وفي آخر الملف تُفتح النافذة بالمقاييس الموضوعة (-geometry  80x10+200+0) ، وننهي

السطر ب -c أي أنَّ هذه النافذة تابعة إلى المطراف الرئيسي console.

 

        ولكل برنامجِ إدارةِ نوافذٍ (Window Manager) ملف عمل خاص :

 

twmrc = twm.

mwmrc = mwm.

 

والمعلومات للنوافذ تكتب في الملف xresources. أو xdefaults.

 

        وهنا مواصفات البرنامج mwm :

 

Mwm*keyboardFocusPolicy:       pointer

Mwm*focusBlackWite:             false

XTerm*scrollbar:  on

XTerm*saveLines:  600

الشكل 80

        وللخروج من X-windows نَخرج أولاً من النوافذ بواسطة exit ¡ أو logout ¡ أو نستعمل

الفأر (mause) للخروج بواسطة وضع السهم إلى أعلى اليسار من النافذة ، وضغطِ المفتاح الأيسر

للفأر مرتين متتاليتين .

 

_

نافذة برنامج عديد اللغات

 

_

نافذة برنامج لتغيير مفاتيح الأحرف

 

_EMBED PBrush \s  \* mergeformat___

شاشة المطراف الرئيسي وتحتوي عديد النوافذ

 

ملاحظة :      العاملون بواسطة النظام MS-Windows على الحاسوب

                الشخصي لايجدون صعوبة في العمل على نظام X-windows .

فهرس المراجع

 

        وللتعمق في نظام يونيكس أنصح بمراجعة الكتب التالية :

 

1.     UNIX System V Stephen & Bourne

        ISBN 3-925118-23-3

 

2.     The Disign and Implementation of the 4.3

        BSD-Unix Operatig System ISBN 0-201-06196-1

 

3.     The Design of the Unix Operating System¡

        M. J. Bach¡   ISBN 0-13-201757-1

 

4.     SCO-UNIX Heinrich Welter ISBN 3-89319-394-4

 

5.     BSD-UNIX Samuel J. Leffler et al

        ISBN 3-89319-239-5

 

6.     The C Programing Language¡ Secund Edition¡

        ISBN 0-13-110362-8

 

7.     Unix System Programing¡ Kith Haviland

        ISBN 0-201-12919-1

 

8.     Advanced Unix Programing¡ Marc J. Rochkind¡

        ISBN 0-13-011818-4

 

9.     UNIX V.4 Systemverwaltung Hauke Richter

        ISBN 3-89319-617-x

 

10.    Advanced Programing in the Unix Eviroment¡ W.

        Richard Stevens ISBN 0-201-56317-7

ملاحظة أخيرة:

 

إن أنظمة التشغيل العاملة حالياً لاتستحق المدح ، والنظام "يونيكس" ليس حلاً مثالياً لنظام

تشغيل عصري ، يغطي جميع الجوانب المنشودة ، ولكنه يعتبر من أفضل "السيئات" .

 

        لننظر مثلاً إلى مجال معالجة الكلمات ، نجد أنَّ البرامج الفائقة في هذا المجال مثل

WORD  ، التي تعمل بواسطة نظام التشغيل MS-DOS و WINDOWS تسد الحاجة وتتفوق .  ولكنَّ نظام

التشغيل يونيكس يفتقد إلى يومنا هذا البرامجَ ذات الأداء المريح ، كما هو الحال في نظام

الحواسب الشخصية PC's. والحل الواقعي الحالي لهذه المشكلة يكون  باستعمال النظام يونيكس

في الجهاز المنفذ server ، ليقوم بالأعمال المركزية لكثير من الحواسب الشخصية في حال ربطها

به . ومن المعروف  بان DOS و WINDOWS لامنافس لهما حالياً في سوق ال PC's .  ومعروف أيضاً أنَّ

يونيكس لم يُبَع ، ولن يباعَ في الأسواق العامة ، كما هو الحال بالنسبة إلى DOS و WINDOWS .

ولكنَّ هناك فرصةً لا بأس بها يتمتع بها النظام Unix-Ware المنتج من شركة Novell بمقدرته على

ربط أنظمة ال PC's بواسطة الشبكة .

        وظهر حديثاً برنامجُ معالجةِ كلماتٍ جديدٌ اسمه Magic Hit ¡ وهو صالح أيضاً في مجال

البرمجة object oriented programing ، ويعمل بواسطة الأنظمة solaris و Onsite-Unix وUnix-

Ware  و HP-UX و Sinix و SCO-Unix.

نرجو من الله عز وجل أن نكون قد قدمنا لمحةً مفيدةً عن نظام التشغيل يونيكس. . . 

د. زياد ديب يوسف 1994.7.28

فهرس الأوامر                                Reference

 

 

        الأوامر التي شرحنا عنها في الكتاب وطريقة إدخالها وميزاتها تجدها حسب الترتيب

الأبجدي اللاتيني ، لكل أمر صفحة او عدة صفحات مع شرح مفصل .

 

        وفي نهاية الكتاب نقدم شرحاً مختصراً لأوامرالنظام  System V .

 

at

 

الإيعاز بالعمل في زمن معين:

 

        بواسطة الأمر at نستطيع الإيعاز إلى أحد البرامج (shell-script) الخاصة بالغلاف

بالعمل في زمن معين في المستقبل ، نختاره باليوم والساعة والدقيقة . وهذه الحالات تكون

مفيدة لإرسال معلومات عبر الشبكة الدولية أثناء الليل ، لقلة تكاليف الخطوط في هذا الوقت ،

دون أن يكون أحد موجوداً لمراقبة الجهاز ، أو الدخولِ إلى النظام ، بشرط أن يظل الجهاز

الرئيسي عاملاً ، ليلَ نهارَ ، دون إطفاءِ أو فصلِ الكهرباء عنه. وإدخالُ الوقت يكون حسبما يفهمه

النظام ، والذي يكون عادةً في النظام الأمريكي من اليسار إلى اليمين:

 

         الساعة ونقطة مزدوجة ¡ والدقائق ، والشهر بالاسم  واليوم بالرقم ،  بهذا الشكل:

(19:30 Jan 15 )  الساعة السابعة والنصف مساء يوم 15 من شهر كانون الثاني.

 

        ونستطيع استعمال الأوقات المسماة باللغة الإنكليزية مثل :

 

noon                          الساعة 12  ظهراً

midnight                      الساعة 12 منتصف الليل

now                           الآن

  Jan Feb....Dez      الأشهر (أول ثلاثة أحرف)

 today                        اليوم

 tomorow                     غداً

 days أو day                 اليوم أو الأيام

 week  أو weeks     الأسبوع أو الأسابيع

 hour أو hours               الساعة أو الساعات

 minute أوminutes  الدقيقة أو الدقائق

 month أو months    الشهر أو الأشهر

  year أو years              العام أو الأعوام

 

ونستطيع بواسطة  +  إضافة الأيام والساعات مثل :

 

now+12               اثنتا عشرةَ ساعةً من الآن

  now+2days تعني يومين بعد الآن

 noon Friday         الجمعة القادمة الساعة 12 ظهراً

 

        وإليك بعض الأمثلة :

at      9:30 Jan 15         1/15 ابدأ العمل الساعة  9 والنصف يوم

at      now + 5 days         ابدأ العمل بعد 5 أيام من الآن 

at      nooh Friday          ابدأ العمل الجمعة القادمة الساعة 12

 

$ at 3:15 Friday

startprog                             startprog  هذا برنامج

............................           نستطيع بالطبع إدخال عديد البرامج

Ctrl-D                        بضغط هذه المفاتيحscript إنهاءإدخال ال

warning: commands will be executed using /bin/sh

job 693451000.a at Fri Jan 30 03:15:00 1993

$

 

        هنا نرى أن العملية ستبدأ  يوم الجمعة القادم في الساعة الثالثة والربع صباحاً

بتشغيل البرنامجstartprog  . ونحن نستطيع إدخال أكثر من برنامج للإنجاز لاحقاً قبل ضغط

المفاتيح Ctrl -D لإنهاء الإدخال ، ولتعمل البرامج في الوقت المحدد لها . ويُعلِمنا النظام

بعد Ctrl -D بتلقيه ما أُدخل إليه ، ويعطينا رقم الوظيفة والتي نستطيع  إيقافها عند الحاجة

.

 

        وبواسطة إدخال الإضافة  at  -l  نستطيع رؤية العمليات التي تكون في حالة انتظار

حُـلول الوقت المعين للإنجاز . هذا ونستطيع وقف عمل أي عملية  باستعمال :

 

$ at -r   process-No  process-No = رقم العملية

awk

 

إظهار السطور بشروط من ملف معين:

 

        البرنامج  awkيقرأ السطور من ملف معين ، ويستعمل الإضافات كأوامر ، ويمكن استعماله

لبرمجة بسيطة ،  مثل استعمال اللغات الدارجة  C  أو BASIC  وغيرها . وإذا استعملناه

لقراءة الملفات فقط ، يكون شبيهاً إلى حد بعيد بالبرنامج grep  ، ولكنَّ الإخراج يكون أدقَّ

وأوضحَ.

 

$ awk  /Berlin/ adr

 

        تظهر لك السطور التي تحتوي Berlin  فقط .

 

$ awk  -F: '{   $7 > 60 }'  adr

 

        وهنا التوضيح (-F:) أن (:) هي الفاصل مابين المجالات . وأن (7$) هي المجال السابع

الذي يجب أن يكون أكثرمن 60 (60<) .  وهكذا يظهر لنا  كل الاشخاص المولودين بعد عام 60 .

 

        وهنا طريقة أخرى لاستعمال هذا البرنامج :

 

$ awk  -F: '{  print  "Name: " ¡  $1¡ $2 }'  adr

Name: Susanne Krieger

Name: Udo Meier

.........................

Name: Anneliese Zimmermann

Name: Thomas Meier

 

                في هذه الحالة يجب وضع الأوامر الإضافية مابين أقواس الزوايا [] مثل print

وتوابعها ، ووضع الإظهار الإضافي مثل "Name" مابين مرفوعات مزدوجة . وجميعُ الأوامر الإضافية

وتوابعها تُحتَضَن بين مرفوعات '  ' عادية.

 

        وللتوضيح (الشكل 53) : كما ذكرنا أن الإضافة (-F:) تفصح علامة الفصل (:) ، و  print

"Name :"  هي أظهر  Name : ¡ و بعدها أظهر المجالين 2$ 1$ وهما الاسم الأول ، واسم العائلة

من الملف adr  .

 

        وإذا وضعنا /Berlin/ قبل print  :

 

$ awk -F: '/Berlin/ { print "Name:"¡$1¡$2' adr

 

                فإنه تظهر لنا فقط السطور التي تحتوي Berlin في الوضع السابق .

 

        وهنا مثال أكثر تعقيداً للإشارة إلى قدرة الحساب :

 

$ awk ' { n=nt$7} END { print "Sum:"¡n}' adr

 

        وهذا يحسب الأعوام ، ويظهر لنا المجموع (n).

bc

 

برنامج الحساب:

 

برنامج bc   يحسب لك الأرقام كالآلة الحاسبة  (وننهي كل سطر ب  Return ) كما هو في المثال

التالي:

 

$ bc

128+54

182

24^4

331776

quitt

$_

وينتهي العمل في هذا البرنامج بإدخال  Quit.

 

        وإذا أردت أن تحسب مع استخدام الفاصل التعدادي فيجب أن تدخل الإضافة-lmath    بعد

الأمر bc :

$ bc -lmath

2.2-1.1

1.1

Quit

$_

 

        ويمكن استخدام جميع العمليات الرياضية (مثل سينوسS() Sinus  ) ولاتنسَ أن تضع مفتاح

الفراغ ما بين الأمر والإضافات .

bg

 

تحويل العمليات الموقفة إلى عمليات خلفية عاملة:

 

إذا كانت هناك عملية ظاهرة أمامية وأوقفناها باستعمال Ctrl-Z  ¡ فإننا نستطيع جعلها تتابع

العمل مباشرة بعد ايقافها باستعمال الأمر   bg لإرسالها إلى الخلف للمتابعة  هناك.

% find  \  -name  sort  -print  >  result

(Ctrl -Z)

% bg

[1]    Running                              sleep  1000

[2]    - Suspended                 vi  tetx

[3]    +Suspended                  find  \  -name  sort  -print

 

cancel (System  V)

 

إيقاف الطباعة:

 

 

$ cancel matrix-75

request "matrix-75" cancelled

 

        وهنا أدخلنا الأمر cancel واسم ورقم العملية ، لإيقافها في حال وجودها في صف

الانتظار (queue).

cat

 

كتابة و إظهار محتوى الملفات:

 

        نعمل ملفاً جديداً بواسطة استعمال الأمر  cat:

$ cat  > file                             هنا نضع الاسم file  الملف

this is my 1. file in UNIX                       هذا  نكتبه كما نشاء

(Ctrl -D)                                       اضغط هذه المفاتيح لإنهاء العمل

 

        وذلك يعني أنك عندما تدخل الأمر (cat) وبعده الإشارةَ (<) ، يرسل (cat) كُلَّ ما تكتبه

إلى الملف (file)¡ بعد أن تضغط المفاتيح (Ctrl -D) .

 

        وإذا أردنا أن يُظهر يونيكس ما كتبناه على الشاشة نُدخل الأمرهكذا:

 

$ cat  file                                 

this is my 1. file in UNIX           

 

        وكما ترى ، فإن برنامج (cat) متعددُ الجوانب ، وكلمة (cat) تعني (concatenate)

تركيب . وتستطيع أن ترفق بعد (cat) عدة ملفات لتَظهَرَ على الشاشة ، أو تُرسَلَ إلى الطابعة

بالتتالي ، أو إلى ملف آخر يجمعها فيه وذلك كالتالي:

 

$ cat     personal   adress    telephon    > staf

 

        ونفهم من ذلك أن الملفات (personal   adress  telefon) تُسَجَّلُ محتوياتُها في ملف

جديد أسميناه (staf) ¡ وتبقى الملفات المنقولة كما هي. وفي حالة عدم وضع > staf بعد cat ¡

يُظهر لنا (cat) محتوى الملفات واحداً تلو آخر على الشاشة فقط. وملخص ذلك، أننا نستطيع

استعمال (cat) لجمع معلومات  كثير من الملفات في ملف واحد، أو أن نكتبَ الملاحظات ونُخزنَها

في ملف جديد . وفي حالة إدخال الأمر (cat) بدون إضافات، يُظهِر ما نكتبه على الشاشة فقط دون

تخزين.

cd

 

التنقل بين الأدلة:

 

        بواسطة الأمر cd (change directory)   يتاح لنا التنقل بين الأدلة:

 

$ pwd

usr/ziad

$ cd /etc

$ pwd

/etc

 

        وهنا يَظهَرُ موقعنا بواسطةpwd  ¡  وهو الدليلusr/ziad  ¡ ونغير الموقع بواسطة cd ¡

ويصبح  /etc .

 

        وفي هذا الشكل نعود إلى موقعنا الأصلي:

 

$ cd /usr/ziad               

$ pwd

/usr/ziad

chgrp

 

تغيير اسم المجموعة مالكة الملف:

 

chgrp Grupname  Filename

 

$ chgrp support personal

$ ls -al personal

-rwxr-x---1 mazen support 35750 13 fos 12.13 personal

chmod

 

 تغيير و إلغاء الحقوق:

 

إن لكل مستخدِم و لكل مجموعة مستخدِمين حقوقاً معينة للقراءة و الكتابة والاستعمال. وهذه

الحقوق يمكننا  تغييرها أو حذفها في حال حيازتنا ملكيةَ الملف. والمدير العام للنظام له

الحق في التغيير وحذف الحقوق. وهذا التغيير يتم بواسطة البرنامج chmod  (change mode).

 

        ويجب اعتماد إضافات التغيير لهذا البرنامج وهي  (u¡ g¡ o)¡ حيث  u تعني اسم

المستخدِم user  ¡ و g  تعني مجموعة المستخدِمين group  ، أما o فباقي المستخدِمين others.

 

        كما يجب مُراعاة ما ذُكر سابقاً عن الحظر واعتماد الرموز التسعة  (rwx rwx rwx

للحظر ومجموعاتها الثلاث ، وتتغيّرُ حقوقُ المجموعة الأولى بواسطة حرف u ¡ وحقوقُ المجموعة

الثانية بواسطة حرف  g¡ وحقوقُ المجموعة الثالثة بواسطة حرف o   كإضافة للأمر chmod.

 

        ويمكننا تغيير الحقوق - كلا على حدة - باستعمال الحروف المذكورة أعلاه، أو سوياً

باستعمال حرف a (all) بدل  u¡g¡o¡ والتغيير يحصل من خلال إدخال رموز التغيير (+  -  =) ،

حيث تعني  + إضافة ، و - حذف¡ و = إضافة جديدة .  وبعد إدخال الحروف البديلة u¡g¡o تُكتب

الحقوق  r=read قراءة ، و  w= write كتابة ، و   x= using  استعمال.

 

        ونستطيع أيضاً إدخال أو تغيير الحرف الثالث من المجموعة الأولى بإدخال الحرفs   ¡

أو بإدخال t    ¡ كما ورد سابقاً عن هذه الحروف وعن مفعولها كبديلة للرمز x  .

 

        وهذه بعض الأمثلة التي توضح تغيير الحقوق:

 

$ chmod g+w Filename                           Filename =   ملف ما

 

        أضفنا حق السماح للمجموعة بالكتابة g+w¡ وتعني  g   مجموعة ، و+ إضافة ، وw 

كتابة.

$ chmod o=rx Filename

        الحقوق r - x   ، قراءة واستعمال من غير كتابة لباقي المستخدِمين o (others).

 

$ chmod a-w Filename

        إزالة حقوق الكتابة من الجميع a (all)   باستعمال w- .

 

        هذا ، ويمكن تغيير عِدَة حقوق في أمر واحد باستعمال الفاصلة ، كما في الشكل الأسفل:

$ chmod g=rx¡u+s File

        عملنا على إعطاء حقوق القراءة والاستعمال للمجموعة ، وإضافة حرف s  للمالك ، أي أن

هذا الملف يعمل بحقوق المالك كما ذكرنا في السابق.

 

        ويمكن استبدال رموز التغيير (rwx) باستعمال الأرقام (الأوكتالية 8^2)، فهي تغني

عنها . وهذه الارقام هي 1 و 2 و 4 ومجموعها  7 عند جمعها حسابياً (1+2+4=7) ، إذ تعني  rwx 

1 استعمال ، و 2 كتابة ، و 4 قراءة ، مثالُ على ذلك: 777 معناها ( rwx  rwx rwx )   ، 

ومثال آخر: 644 معناها (- r w - r - - r -  )  ...الخ .

 

        ونستطيع إدخال الحرف s   رقماً رابعاً. مثالُ ذلك:

        4755 وهي تعني أن جميع المستخدِمين يحصلون على حق القراءة والاستعمال، وأن مالك

الملف يحصل على جميع الحقوق، إضافةً إلى أن هذا الملفَ يعمل بحقوق المالك (rwsr-xr-x) . أما

حرف  t فيتم إدخاله بواسطة (root) مديرِ النظام فقط .

chown

 

تغيير ملكية الملفات:

 

        ويتم تغيير الملكية بواسطة البرنامج  (change owne)  chown هكذا:

 

$ ls -al personal

$ -rwxr-x---  1      ziad       staf    35750       13  Feb  12.13  personal

$ chown mazen personal

$ -rwxr-x---  1      mazen  staf    35750  13  Feb  12.13  personal

 

        وتغيير ملكية الملف  personal من المالك ziad إلى المالك  mazen  لا يحصل إلا من

قبل مالك الملف أو مديرِ النظام root  .

 

        وجدير بالذكر أنَّ بعض أنظمة يونيكس تُحدد قسماً خاصاً من وحدة التخزين لكل مستخدِم في

استعمال مساحة محددة منها ، ويمكن أن يرفض النظام التغييرَ المرغوب به لقلة حجم المساحة

المعطاة لأحد المستخدِمين ، أي أنَّ (disk quta) المعطاة للمستخدِم تكون مستهلكةً أو غيرَ كافية

، وفي بعض الأحيان يكون مفعول البرنامجchown  ملغياً من قبل مدير النظام. وما ذكرنا عن

تغيير المالك يُطَبَّقُ أيضاً على المجموعات المالكة ، وذلك بإدخال الأمر كما يلي:

 

$ chgrp support personal

$ ls -al personal

-rwxr-x---1 mazen support 35750 13 fos 12.13 personal

$_

chsh

 

تغيير غلاف الدخول.

 

تغيير غلاف الدخول يتم بواسطة الأمر(change shell) chsh   هكذا:

 

$ chsh

changeing login shell for ziad on jordsys.اسم النظام

Old shell: /bin/sh                                    اسم الغلاف الحالي بورني

New shell: /bin/csh                           الغلاف الجديد سي

$_

 

 

        وهنا نرى أن الأغلفة موجودة في الدليل  /bin¡ أما الأغلفة الأخرى التي ذكرناها سابقاً

، فهي موجودة في الدليل  /usr/bin أو /usr/local/bin :

 

clear

 

حذف محتوى الشاشة :

 

$_

$ clear <Return>

 

cmp

 

مقارنة الملفات:

 

        يوجد برنامجان للمقارنة بين الملفات : أولاهما cmp  (compare)  وهو يقارن ملفين ،

ويُفصح عن حالة الاختلاف إذا ما وُجد بينهما ، و الثاني هو البرنامج  diff  الذي يُظهر الاختلاف

بالتفصيل.

 

        ولتوضيح عمل هذه البرامج ننشىء أولا ملف بيانات ، ونسميه adr ¡ ونضع داخله عدة

أسماء لأشخاص : ونقوم بكتابة الاسم الأول ، واسم العائلة ، والعنوان ، وتاريخِ ومكانِ الميلاد ،

ونفصل المجالات بواسطة النقاط العمودية (:) ، كما هو في الشكل التالي:

 

        محتوى الملف adr

Susanne:Krieger:Fischerweg 8:Jena:1:5:67

Udo:Meier:Dorfstr. 12:Reutlingen:2:10:56

Otto:Schneider:Taubenweg 2:Berlin:10:5:47

Kristina:Weber:Altenberger Chaussee 2:Zittau:9:8:71

Michael:Kolbe:Uferstr. 24:Rostock:23:11:70

David:Goldstein:Florastr. 7:Essen:8:11:38

Hannelore:Becker:Bismarckstr. 173:Hamburg:21:9:50

Jens:Hofmeister:Am Markt 43:Zittau:19:2:73

Anneliese:Zimmermann:Bachstr. 24:Berlin:13:4:34

Thomas:Meier:Forstweg 1:Stuttgart:7:10:81

 

        الملف  adr يحتوي الآن على سجلات ومجالات ، ويسمى هذا الملف في لغة الحاسوب قاعدة

مُعطيات (بيانات)(database)  ، والسجل يسمى (record)  والمجال  (field) . ومحتوى ملف adr 

يتكون من عدة سجلات ،  وكل سجل يتكون من عدة مجالات يُفصَـلُ ما بينها بواسطة (:).

 

        وننشىءُ الآن ملفاً آخرَ (نسخة عن adr) بمواصفات مماثلة،  باسم  new  ، ونغير به بعض

السجلات كالتالي :

 

Susanne:Krieger:Fischerweg 8:Jena:1:5:67

Harry:Meier:Dorfstr. 12:Reutlingen:2:10:56

Sven:Baumann:Eschenfeld 4:Bremen:16:2:65

Otto:Schneider:Taubenweg 2:Berlin:10:5:47

Kristina:Weber:Altenberger Chaussee 2:Zittau:9:8:71

David:Goldstein:Florastr. 7:Essen:8:11:38

Michael:Kolbe:Uferstr. 24:Rostock:23:11:70

Hannelore:Becker:Bismarckstr. 173:Hamburg:21:9:50

Jens:Hofmeister:Am Markt 43:Zittau:19:2:73

Anneliese:Zimmermann:Bachstr. 24:Berlin:13:4:34

 

        والآن نقارن الملفين بواسطة  cmp  كالتالي:

 

$ cmp new adr

new adr differ: char 42¡ line 2

 

        وهذا يعني أن الملفين مختلفان اختلافاً يبدأ في السطر الثاني ، ومجموع الاختلاف 42

حرفاً ، وبرنامج cmp   لايهمه نوع الاختلاف الموجود ، ولكنه يُفصح عن تعداد ال Byte's  ¡

ويخبرنا عن حالة الاختلاف تعدادياً.

compress

 

تكثيف الملفات:

 

        تكثيف الملفات من أهم الأعمال التي يقوم بها مدير النظام أو المسؤول عن تخزين

المعلومات ، وكذلك إرسالها عبر الشبكات المحلية والدولية، لأن التكثيف يوفر من سعة

أسطوانات و أشرطة التخزين ¡ ويوفر رسوم إرسال المعلومات عبر الشبكات. وفي أغلب الأحيان

تُخزن ملفات تحتوي على معلومات حروف مثل البيانات ، و الرسائل ، والعقود التجارية ، إلخ...

 

         ويتواجد في هذه الملفات كثيرٌ من الكلمات والعبارات التي يتكرر ذكرها ، وبرنامج 

compress يجمع هذه المعلومات - التي يعاد ذكرها - في رموز معينة يفهمها البرنامج . وفي

أغلب الأحيان يُقلّص عدد ال  Bytes  في حجم الملف إلى النصف أو الربع بواسطة compress .

ولايصلح استعمال الملفات المكثفة إلا بعد فك تكثيفها ، وإعادتها إلى حالتها الأصلية .

 

        وهاك مثالاً على ذلك:

 

$ ls -al text*

-rw-r--r--     1      ziad    233353        May 10     10:26 text.Z

$ compress   text.Z

$ ls -al text*

-rw-r--r--     1      ziad    52895       May   10     10:26 text.Z

 

        هنا نرى أن الملف text.Z كان حجمه233353 (Bytes)  حرفاً ، وأصبح بعد التكثيف 52895

حرفاً ، أي صار أقلَّ من ربع حجمه الأصلي ، وهذا يوفر- طبعا- توفيراً  ملموساً في جميع المجالات.

 

هذا ، ونستطيع إعادة الملف text إلى وضعه الأصلي بواسطة :

 

$ compress -d text                   (decompress) -d لاتنسَ الإضافة

 

        وهناك برامج أُخرى شبيهة القدرة ، وظيفتها تكثيف الملفات مثل :  zip¡ lharc ¡ zoo¡

freeze .

cp

 

نسخ وازدواجية الملفات:

 

        بواسطة البرنامج (copy)  cp يمكن عمل نُسخة إضافية للملف باسم آخر:

 

$ cp mustafa Ahmad

$ ls -F

ahmad mustafa kamal text/

 

        كما يمكنك أن تنسخ الملف في دليل آخر  بالاسم ذاته:

 

$ cp ahmad text

$ ls -F text

ahmad muhdi

cut

 

الإظهار باقتطاع المعلومات:

 

        وهنا نتحدث عن البرنامج cut  الذي يقتطع معلومات معينة من الملف ، ويظهرها على

الشاشة ، أو يخزنها في ملف آخر. و  cut  يفهم الإضافات :  -f    وتعني المجالات (field) ¡ و

-d  للإشارة إلى رمز الانفصال ، و -c  للإشارة إلى الحروف في السجل أو المجال . وهنا مثال

على ذلك :

 

$ cut -d: -f1-2¡4 adr

Susanne:Krieger:Jena

Udo:Meier:Reutlingen

Otto:Schneider:Berlin

Kristina:Weber:Zittau

Michael:Kolbe:Rostock

David:Goldstein:Essen

Hannelore:Becker:Hamburg

Jens:Hofmeister:Zittau

Anneliese:Zimmermann:Berlin

Thomas:Meier:Stuttgart

الشكل 46

 

        وهنا - في الأعلى - أدخلنا الإضافة -d:  مع رمز الانفصال (:) ، وتظهر المجالات من

الأول إلى الثاني زائد الرابع -f1-2¡4 ¡ والملف المشار إليه وهو  adr.

 

$ cut -d: -c1-20 adr

Susanne:Krieger:Fisc

Udo:Meier:Dorfstr. 1

Otto:Schneider:Taube

Kristina:Weber:Alten

Michael:Kolbe:Uferst

David:Goldstein:Flor

Hannelore:Becker:Bis

Jens:Hofmeister:Am M

Anneliese:Zimmermann

Thomas:Meier:Forstw

الشكل 47

 

        واستعملنا هنا ( حرفc = character  ) -c1-20  لتحديد أول 20 حرفاً من السجل (من c1

إلى c20) من الملف adr  .

date

 

ادخال وتغيير التاريخ:

 

$ date                                                               مثال

 Wed Feb. 19  10:46:15  1993

$_

برنامج إظهارالتاريخ  date

 

        باستعمال الأمر (date) يظهر في المثال أعلاه، اليوم والشهر والساعة والدقيقة

والثانية والعام.

diff

 

مقارنة الملفات:

 

برنامج diff يعطينا حالات الاختلاف مفصلة ، ويقرأ الملف سطراً سطراً ، ويبين البرنامجُ ذلك

بإظهار اختلاف السطور كما يلي:

 

$ diff new adr

2¡3c2

< Harry:Meier:Dorfstr. 12:Reutlingen:2:10:56

< Sven:Baumann:Eschenfeld 4:Bremen:16:2:65

.....

> Udo:Meier:Dorfstr. 12:Reutlingen:2:10:56

5a5

> Michael:Kolbe:Uferstr. 24:Rostock:23:11:70

9a10

> Thomas:Meier:Forstweg 1:Stuttgart:7:10:81

الشكل 38

 

        في هذه الحالة يُظهر البرنامج diff - بواسطة أحرف ورموز - كيفيةَ تصحيحِ الملف

الثاني ، ليصبح مماثلاً للملف الأول .

 

الرموز تعني : a  إضافة added ¡ و c تغييرchange  ¡ و d حذف delete. ونجد رقمَ السطر (

السجل) المتسلسل المعني بالتغيير بعد هذه الأحرف ، ثم نجد السجل من الملف الأول مسبوقاً برمز

> ، والسجل من الملف الثاني مسبوقاً برمز < ، وفي المثال الأعلى (الشكل 38) : تظهر من الملف

 new  أرقام السجلات التي يجب تغييرها 2،3c2 ، وبعد ذلك يظهرالسجل الخامس 5a5 من adr  

لإضافته إلى ما بعد السجل الخامس من  new  ، وكذلك التاسع بعد العاشر 9a10 ...إلخ.

 

        واذااستعملنا إدخال الملفات بعكس ماذكرنا في الأعلى يكون adr  هو الأول ،  وnew  هو

الثاني:

 

$ diff  adr  new

2c2¡3

< Udo:Meier:Dorfstr. 12:Reutlingen:2:10:56

...

> Harry:Meier:Dorfstr. 12:Reutlingen:2:10:56

> Sven:Baumann:Eschenfeld 4:Bremen:16:2:65

5d5

< Michael:Kolbe:Uferstr. 24:Rostock:23:11:70

10d9

> Thomas:Meier:Forstweg 1:Stuttgart:7:10:81

الشكل 39

 

        هنا يُعلمنا البرنامج  diff نتيجة المقارنة ، وهي أن السجل الثاني من adr  يجب

تبديله بالسجل الثاني والثالث من new  ¡ و يُحذَفُ السجلان الخامس والعاشر من adr  (d) .

 

        وبرنامج  diff  لايصلح لمقارنة الملفات البينرية binary-files التي تحتوي على لغة

الآلة ، وفي هذه الحالة يكون من الأفضل استعمال البرنامج cmp .

elm

البريد الإلكتلروني بواسطة elm:

 

        وهناك أيضاً البرنامج elm (إذا كان موجوداً بالنظام) ،  وهو إلى حد بعيد يشبه mail

في الإمكانات ، ولكنه أفضل للاستعمال ، ونحن ننصح باستعماله بديلاً عنه .

 

        لدى استعمالنا البرنامج elm أول مرة ، يسألنا البرنامج عن إنشاء دليلين جديدين (

mail  &  elm ) في دليل المستخدِم الخاص (Homedirectry) ¡ لأن elm بحاجة إلى هذين الدليلين

. ولذلك يجب الإجابة على سؤال elm بعمل الدليلين ب y . ودليلُ elm يحتوي قوائمَ وقياساتٍ

يحتاجها البرنامج elm ، وبه تُخزن الرسائل القادمة .         بعد عمل الأدلة تظهر لك نافذة

elm :

 

_

 

        تحرك العارضة باستعمال موجه المحث _SYMBOL 175 \f "Symbol"__SYMBOL 173 \f

"Symbol"_ للأسفل والأعلى ، ولقراءة البريد Return . وفي أسفل النافذة الرئيسة نجد الأحرف

التي تُستعمل لوظائف مختلفة :

 d = delite احذف

 u = undelete ارفع الحذف

m  = mail a message أرسل رسالة

 r = reply إجابة على الرسالة

 f = forward إرسال نسخة إلى أحد المستخدِمين

 q = quit نهاية العمل بالبرنامج

 z = help معلومات مساعدة

 s = save تخزين في الملف

 

 

_

 

        في أسفل هذه النافذة نجد "i" ¡ وبواسطتها نعود إلى النافذة الرئيسة .

env

 

إظهار محتويات البدائل:

 

        بواسطة البرنامج env نستطيع إظهار محتويات البدائل :

 

$ env

HOME=/home/ziad

SHELL=/bin/sh

TERM=vt100

USER=ziad

PATH=/bin:/usr/ucb:/usr/bin:/etc:/usr/etc:/usr/X11/bin:/usr/gnu/bin:.

LOGNAME=ziad

PWD=/home/ziad/text

HOST=jordsys

HOSTTYPE=sun4

EXINIT=set ai noto aw wa noslow opt

 

 

        وبدائل النظام أو الغلاف  تتواجد هنا بالأحرف الكبيرة ، ويمكن إضافةُ بدائل أخرى

خاصةٍ إليها. ولكل مستخدِم تكون هناك معلومات خاصة بعمله ، ومن خلالها يعرف النظامُ التفاصيل

: ما هي أدلته ومطرافه ، واسم النظام الذي يعمل به ، ونوعيته ، والأدلة المفتوحة له،

والغلاف الذي يعمل به حالياً.

 

         وهذه الأسماءُ المكتوبةُ بالأحرف الكبيرة هي أسماءّ ثابتة ، وتتغير توابعها حسب حاجة

المستخدِم لهذه التوابع.

fg

 

تحويل العمليات الموقفة إلى عمليات أمامية عاملة:

 

إذا كانت هناك عملية ظاهرة أمامية وأوقفناها باستعمال Ctrl-Z  ¡ نستطيع جعلها تتابع العمل

مباشرة بعد ايقافها باستعمال الأمر   fg لمواصلة العمل.

file

 

إظهار نوعية الملف:

 

        ويتم ذلك بواسطة البرنامج file لإظهار نوعية الملف :

 

$ file \bin\cat

\bin\cat:  sparc pure dinamicaly linked executable

$ file \etc\passwd

\etc\passwd: ascii text

 

 

        ومن المستحسن إظهار النوعية بواسطة file قبل إظهار محتويات الملفات ، التي تتم

بواسطة البرنامجين cat أو od أو غيرهما للتأكد من النوعية.

find

البحث عن الملفات:

 

        هنا نشرح قدرات البرنامج find في البحث عن الملفات ومحتوياتها. حيث ذكرنا سابقاً

أنّ الملفات موجودة في أدلة مختلفة موزعة في النظام، ولدينا هناك 200 دليل تحتوي مئات

الملفات ، ولكن إذا وُجد ملفٌ في أحد الأدلة وكنا بحاجة إلى محتوياته ، فكيف يمكننا أن نجده

بسهولة..؟

 

        في البداية نشرح معايير وإضافات البرنامجfind :

-name                ????         اسم الملف

-perm        777           حقوق الملف

-type                 f               (d دليل) (f ملف)

-user                 ziad           مالك الملف

-group               staf            المجموعة

-newer               mustafa       mustafa الملف الأحدث من

-atime                +7            ملفات لم تستعمل منذ 7 أيام

-mtime               +7            ملفات لم تغير منذ 7 أيام

-ctime                +7            منذ7 أيام لم تغير inode لائحة

-links                2              عدد الارتباطات

 

        وهنا نشرح بعضها بالتفصيل:

-name

find -name   'a*'                      aالبحث عن الملفات التي تبدأ في

find -name   mustafa         mustafa البحث عن الملف

find / -name  mustafa                في جميع الأدلة mustafaالبحث عن

find /text -name mustafa     /textفي دليل   mustafaالبحث عن

-perm                        chmodلاستعمال هذا المعيار انظر الأمر 

perm 777                             rwx rwx rwxابحث عن ملف بهذه الحقوق 

perm 755                             rwx r-x r-x    ابحث عن ملف بهذه الحقوق 

perm 600                             rw- --- ---      ابحث عن ملف بهذه الحقوق 

 

-type   d                             ابحث عن أدلة

-type   f                              ابحث عن ملفات

 

        وهنا بعض الأمثلة لاستعمال برنامجfind :

$ find -name mustafa -exec file { }\;

        ابحث عن الملف mustafa ¡ واعمل بالأمر file (بواسطة -exec)¡الذي يُظهر لنا نوعية

الملف.

 

$ find -name mustafa -ok rm { };

        ابحث عن الملف mstafa  واحذفه بواسطة rm   بعد الموافقة (-ok).

 

$ find / -type f -user ziad -perm 777 -print

        ابحث عن جميع الملفات التي يملكهاziad  ¡ على أن يكون لباقي المستخدِمين الحقوق

الكاملة (777) ، وأرسل المحتوى إلى الشاشة -print .

 

$ find   / -name  'mu*'  -mtime +7-exec rm> { };

        ابحث عن الملفات التي تبدأ بالأحرف  mu  ¡ والتي لم تتغير منذ الأيام السبعةالأخيرة

، واحذفها من وحدة التخزين دون موافقة.

finger

 

إظهار المستخدِمين:

 

        بواسطة البرامج finger نستطيع إظهار المستخدِمين الذين يعملون على حاسوبنا ،

والذين قد دخلوا إليه بواسطة الشبكة .

 

$ finger

Login  Name         TTY   Idle   When Where

ziad            Ziad Yousef   co             Thu 10:18

karl           Karl Schmidt p3             Thu 11:33     gnom

duffy          Sven Meier   p2      0:05  Thu 12:36     abakus

$

الشكل 70

 

        وهنا يظهر الاسم الإلكتروني لكل مستخدِم ، واسمه الطبيعي الموجود في الملف

/etc/passwd ، واسم المطراف ، والوقت (when) الذي لم يعمل به ، واسم الحاسوب ، ومن أين هو

قادم . وفي حالة عدم وجود اسم الحاسوب ، يكون المستخدِم موجوداً في هذا الحاسوب الذي خرجت

منه المعلومات .

 

        وإذا أردنا الحصول على معلومات مفصلة عن أحد المستخدِمين ندخِل اسمه بعد الأمر :

 

$ finger karl

Login mame: karl

Directory: /u/karl

On since Fed 20 11:33:12  on ttyp3 at snoopy from gnom

No plan.

 

        ويظهر هنا الاسم login-name ¡ والدليل الذي يعمل به ، وآخر دخول إلى النظام ، ومتى

قُرئ البريد ، ومحتوى الملف plan الذي يحتوي على معلومات مفصلة عن المستخدِم المذكور ، وهذا

الملف يكون موجوداً في دليل المستخدِم الخاص ، أو يظهر no plan في حالة عدم وجوده .

 

        ونستطيع الحصول على معلومات خاصة عن مستخدِمي الحواسب البعيدة بواسطة finger ،

بإدخال الاسم واسم الحاسوب البعيد .

 

$ finger lutz@kaktus

[180.70.40.16]

Login name: lutz                     In real life: Lutz Schneider

Directory: /u/lutz                     Shell: /bin/csh

Last login: Feb 19 11:02:12 on ttyp2 from abakus

N0 plan.

 

        ويستخدم اسم الحاسوب فقط لإظهار المستخدِمين هناك :

 

$ finger @kaktus

Login  Name         TTY   Idle    Whrn  Where

conny Corinna kaiser       co             Thi 10:38

af              Ansrim Freitag       p3      0:12 Thu 11:05 snoopy

 

        ومن المتوقع أن يحصل الاتصال ، ويُظهِرُ الإنذار أنَّ الاتصال قد رُفض connection refused 

¡ لأن مدير النظام هناك قد مَنَعَ الدخول .

ftp

نقل الملفات عبر الشبكة:

 

        نستعمل البرنامج ftp لنقل الملفات عبر الشبكة . ولدى العمل بواسطة ftp لا نستعمل

أحد الأغلفة (Shell) هناك ، لأن ftp يقوم بالعمل على الحاسوب المُتصَل به كغلاف ، ويظهر المحث

بشكل ftp> بدلا من $ .

 

        الدخول إلى الحاسوب البعيد :

$ ftp  abakus

Connected to abakus.

220 abakus FTP server ready.

Name Cabakus:ziad):ziad                           ziad هنا ندخل الاسم

33  password required required for ziad

password:                                            هنا ندخل كلمة المرور

 

230 User ziad  logged in

ftp>                                                  هنا يظهر المحث .

. . .

 

الخروج من الحاسوب البعيد :

ftp> quit                              quit الخروج بواسطة

221   Goodbye

$_                                    محث غلاف حاسوبنا

 

        سرد الملفات والأدلة بواسطة ftp :

        بعد الدخول بواسطة ftp إلى الحاسوب البعيد (كما ذكرنا في الأعلى) ، نستطيع استعمال

أوامر النظام وكأننا نعمل هناك .

 

ftp> pwd

257 "/usr/meikel" is current directory.

ftp> dir

200 PORT command successfu1.

150 Opening ASCII mode data connection for /bin/ls.

total 8

-rwx------     1      meikel user   126   Mar   31     07:59 .cshrc

-rw-------     1      meikel user   405   Mar   31     07:59 .login

drwxr-xr-x    2      meikel user   384   Mar   31     08:14 c

drwx------     2      meikel user   384   Mar   31     07:59 Mail

226 Transfer complete.

304 bytes received in 0.68 seconds (o.44 kbytes/s)

ftp> ls

200 PORT commandsuccessful.

150 Opening ASCII mode data connection for file list

.cshrc

.login

Mail

c

226 Transfer complete.

25 bytes received in 0.02 seconds (1.22 kbytes/s)

ftp> cd c

250 CWD command successful.

ftp> dir *.c

200 PORT command successful.

150 Opening ASCII mode data connection for /bin/ls.

-rw-r--r--     1      meikel user   10602       Mar   31     08:01 adr.c

226 Transfer comlete.

remote: *.c

60 bytes received in 0.12 seconds ( 0.49 kbytes/s )

ftp>

 

        بعد إدخال أي أمر يُجيب البرنامج  ، ويعلمنا عن كل تقدم في عملية الإرسال والاستقبال

.

 

        نقل الملفات بين الحواسب بواسطة ftp :

 

        بواسطة الأوامر get (اجلب) و put (أرسل أو انسخ) نستطيع جلب وإرسال الملفات من

وإلى الحواسب بواسطة الشبكات . وإذا أردنا جلب أو إرسال عدة ملفات نستعمل الأوامر mget و

mput ¡ وبواسطتها نستطيع استعمال النجمة * وعلامة الاستفهام ? كبدائل لأسماء الملفات كما

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

الحث بواسطة الأمر prompt off ¡ وإعادته الى عمله بواسطة prompt on . وحالة حث الإثبات هذه

تنفع في تجنب نسخ أحد الملفات التي تحمل الاسم نفسه .

 

        نوعية نقل الملفات :

 

يتم النقل بالحروف (ASCII) ¡ وهي الحالة الطبيعية للنقل ، وفيها ينتهي كل سطر من الملف

بالإشارة (ASCII 10)  Linefeed (انظر ASCII-Code) ¡ وللمطابقة يُحَوِّل يونيكس كل (Linefeed

Carriae Return) إلى Linefeed فقط ، وبهذه تكون المطابقة تامة لجميع الملفات المنقولة .

وهذا يختلف عن حالة السطور في نظام MS-DOS ، الذي ينهي السطور بالإشارة ASCII 13 ، وهي

Linfeed Carriag Return .

 

        في حال نقل الملفات غير ASCII ¡ أي نقل الملفات البينرية (Binaryfiles) (برامج أو

ملفات مكثفة أو صور محولة إلى رموز) ، يجب ضبط وتأكيد هذه الحالة بواسطة إدخال الأمرbinary

 أو bin ¡ وبعد ذلك يكون برنامج النقل ftp في حالة نقل بينري . ونستطيع تغيير هذه الحالة

إلى حالة نقل الحروف ASCII بواسطة الأمر ascii . ويجب الانتباه إلى التغيير مابين الحالتين

binary و ascii قبل القيام بعملية النقل . ونحن ننصح بالأخذ بحالة binary للعمل في برنامج

ftp ¡  وباستعمال حالة ascii لنقل الرسائل والنصوص فقط .

 

        أثناء نقل الطرود (packet) نستطيع استعمال الرمز (#) لرؤية نهاية نقل كل طرد من

الطرود الإلكترونية . ونُدخل هذه الحالة بواسطة hash on ¡ ونحذفها بواسطة hash off ¡ وهذه

العملية تسمى hash marks .

 

        وهنا نقدم بعض الأمثلة لنقل الملفات والطرود :

ftp> dir

200 PORT command successful.

150 Opening ASCII mode data connection for /binls.

total 76

-rwr-xr-x     1      meikel user   55642       Mar   31     08:10 adr

-rw--r--       1      meikel user   10602       Mar   31     08:01 adr.c

-rw-r--r--     1      meikel user   887   Mar   31     08:14 adr.dat

226 Transfer complete.

190 bytes received in 0.44 seconds ( 0.42 kbytes/s )

ftp> bin

200 Type set to I.

ftp> get adr.c

200 PORT command successful.

150 Opening BINARY mode data connection for adr.c ( 10602 bytes ).

226 Transfer complete.

local: adr.c remote: adr.c

10602 bytees received in 0.04 seconds ( 265.05 kbytes/s )

ftp>

 

        وهنا استعملنا الأمر get من خلال حاسوب بعيد ، ونقلنا الملف adr.c بعد أن حولنا

حالة النقل إلى حالة binary ¡ بواسطة bin .

 

ftp> mget *

mget adr? y

200 PORT command successful.

150 Opening BINARY mode data connection for adr ( 55642 bytes )

226 Transfer complete.

local: adr

55642 bytes received in 0.14 seconds ( 388.13 kbytes/s )

mget adr.c? n

mget adr.dat? y

200 PORT command successful.

150 Opening BINARY mode data connection for adr.dat ( 887 Bytes ).

226 Transfer complete.

local: adr. dat remote: adr.dat

887 bytes received in 0.04 seconds ( 21.66 kbytes/s )

ftp>

 

 

        وهنا ننقل جميع ملفات الدليل بواسطة * mget . والبرنامج يسألنا إذا أردنا النقل

أم لا، ونستطيع الإجابة :  y (yes) أو n (no)  ¡ لأننا لم نستعمل prompt off لإيقاف التأكيد ،

ونُدخل n إذا لم نرد نقل الملف adr.c ¡ وغير ذلك ندخل y نعم .

 

ftp> propt off

Interactive mode off.

ftp> mget *

200 PORT command successful.

150 Opening BINARY mode data connection for adr ( 55642 bytes ).

226 Transfer complete.

local: adr remote: adr

55642 bytes receeived in 0.26 secnds ( 208.99 kbytes/s )

200 PORT command successful.

150 Opening BINARY mode data connection for adr.c ( 10602 bytes/s ).

226 Transfer complete.

local: adr.c remote: adr.c

10602 bytes received in 0.02 seconds ( 517.68 kbytes/s )

200 PORT command successful.

150 Opening BINARY mode data connetion for adr.dat ( 887 bytes ).

226 Transfer complete.

local: adr.dat remote: adr.dat

887 bytes received in 0.08 seconds ( 10.83 kbytes/s )

ftp>

 

        وهنا الحالة مع استعمال prompt off دون تأكيد النقل ب (نعم أو لا) . وتُنقل الملفات

دون تأكيد .

 

ftp< hash on

Hash mark printing on ( 4096 bytes/hash mark ).

ftp> get adr

200 PORT command successful.

150 Opening BINARY mode data connection for adr ( 55642 bytes ).

#######

226 Transfer complete.

local: adr remote: adr

55642 bytes received in 0.24 seconds ( 226.41 kbytes/s )

ftp>

 

        وهنا (في الأعلى) حالة النقل باستعمال hash on لإدخال # بعد كل طرد ،  وبذلك نعرف

عدد الطرود المرسلة .

 

        في الحالات السابقة استعملنا get  و   mgetلإحضار الطرود من الحاسوب البعيد .

ونستطيع إرسال الطرود بواسطة put و mput ¡ وهذه تعمل مثل get و mget ¡ ولكن بالعكس ، أي

نُرسل من حاسوبنا إلى الحاسوب البعيد ...إلخ .

 

                ملاحظة: أثناء استعمالنا لبرنامج ftp يجب التأكد من حقوق العمل في الملفات

(قراءة وكتابة و استعمال) قبل نقلها.

 

        بواسطة البرنامج ftp لانستطيع إظهار محتويات الملفات البعيدة على شاشتنا، ولكنَّ

هناك طريقةً استثنائيةً عبر الأنبوب (pipeline) لإظهار المحتويات ، وذلك بواسطة الأوامر more 

وwc  و cat ، أو أي أمر آخر نستعمله بعد إشارة الأنبوب (|) مباشرة .

 

        وهنا مثل لاستعمال wc :

 

ftp> get adr.c |wc

200 PORT command successfil.

150 Opening ASCII mode data connection for adr.c ( 10602 bytes ).

        533   865   10602

226 Transfer complete.

local: |wc remote: adr.c

11135 bytes received in 0.90 seconds ( 12.08 kbytes/s )

ftp>

 

        هنا أدخلنا البرنامج wc بعد إشارة الأنبوب مباشرةً لتعداد السطور والكلمات والأحرف ،

ولإظهارها على شاشتنا من الملف adr.c الموجود بعيداً..

 

        وأثناء عملنا في البرنامج ftp نستطيع حذف أحد الملفات الموجودة في الحاسوب البعيد

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

 

ftp> delete  adr.dat

250 DELE  command successful.

ftp>

 

        ولتغيير الأدلة نستعمل lcd بدل cd .

ftp> lcd tmp

Local directory now  /home/ziad/tmp

ftp>

 

        ونستطيع استعمال أوامر الغلاف بإدخال ! قبل الأمر :

ftp>!date     

ftp>!ls  -al           

ftp>!more filename

 

        ونستطيع إنهاء عمل ftp بإدخال quit ¡ وبهذا ننهي أيضاً الاتصال بالحاسوب البعيد .

وإدخالُ close ينهي الاتصال فقط ، وبواسطة open واسم الحاسوب البعيد نعيد الاتصال ثانيةً .

 

        في حال نقل كميات كبيرة من المعلومات والملفات والتي تستغرق ساعات كثيرة نستعمل

ftp خلفياً ، أي دون ظهور العملية على الشاشة أثناء العمل ، وهنا يجب الانتباه إلى أن

الدخول إلى الحاسوب البعيد يحتاج إلى اسم المستخدِم وكلمة المرور أيضاً ، وذلك في حالة

Login هناك . ويجب إدخال الإضافات  nو i  للحد من الأسئلة  أثناء نقل المعلومات (prompt off

= i ) ¡ وللحيلولة دون الدخول الطبيعي login بواسطة (no login = n) . وفي حالة النقل

الخلفي نحتاج إلى الأوامر بالإضافة إلى أسماء الملفات ...إلخ . ونسجل هذه الأوامر والإيعازات

في ملف خاص ، ونُدخِل هذا الملف بواسطة > إلى الأمر ftp ¡ أي أنَّ الأوامرَ تأتي من هذا الملف .

ويجب  الحرص على أن نكتب في آخر سطر من هذا الملف الأمر quit ، لإنهاء العمل الخلفي ل ftp

بعد إنجاز الأعمال ، وخلاف ذلك يظل ftp عاملاً إلى الأبد كعملية خلفية ، أو أن يُحذف بواسطة

kill لاحقاً .

 

        وإليك طريقة إدخال هذا الأمر للعمل في الخفاء :

$ ftp -in jordsys < inputfile  &     «الملف الذي يحتوي الأوامر inputfile»

[1] 4635

$

 

        ومحتوى inputfile يكون مثلاً هكذا :

user ziad password

bin hash off

mget *

quit

        ويعمل البرنامج ftp في الخفاء ، وينفذ هذه الأوامر.

 

        في حال استخدام internet نستعمل اسم المستخدِم الوهمي ftp (anonymous) ، لنسخ

وإحضار الملفات من الحواسب البعيدة . وهذه الملفات تكون - عادة - مجردة من القيود ، أي أنَّ

بالإمكان نسخَها وإحضارَها للاستعمال العام ، مثل البريد ، أو برامج  Shareware ، أو Public

Domain Software  المجانية ، والتي نحصل عليها دون رسوم استعمال . ولذلك يجب استخدام أول

سطر من inputfile  ، باستعمال اسم ذلك  المستخدِم الوهمي ، ككلمة مرور هناك :

user ftp ftp

bin

get adr.c

quit

        واسم المستخدِم هناك يكون ftp ¡ وهذا متعارف عليه للاستعمال العام .

grep    grep ¡ egrep ¡ fgrep

 

البحث عن معلومات معينة:

 

        البرنامج  grep  هو من أكثر البرامج استعمالاً ، لقدرته على البحث عن المعلومات

المطلوبة داخل الملفات . وهناك ثلاثة برامج مطابقة: grep ¡ egrep ¡ fgrep  وهي برامجُ تمتاز

بقدرات متساوية . وفي هذا الكتاب نشرح عمل البرنامج grep :

 

$ grep Berlin adr

Otto:Schneider: Taubenweg 2:Berlin:10:5:47

Anneliese:Zimmerman:Bachstr.24:Berlin:13:4:34

$ grep ' ^Jens ' adr

Jens:Hofmrister:Am Markt 43:Z:Hau:19:2:73

$ grep ' 7.$ '  adr

Kristina:Weber:Altenberger Chaussee2:Z:Hau:9:8:71

............

.

          بحثنا أولاً عن  Berlin في الملف adr ¡ وتَظهَرُ السطور التي تحتوي هذه الكلمة . وفي

المثال الثاني بحثنا عن الاسم في بداية السجل بواسطة (^)  ، وفي المثال الثالث استعملنا $

(أي قبل الأخير من السجل يكون الرقم 7) ، وهذا يعني أن سنة الميلاد تكون في السبعينات .

ويمكن استعمال * للبحث المتكرر عن حرف ما . واذا استعملنا الإضافة-c  فيُظهر لنا  grep عدد

السجلات التي تحتوي كلمةً أو حرفاً ما :

 

$ grep -c o adr

5

 

        ومعنى ذلك أن grep وجد حرف o في خمسة أسطر . وعكس ذلك نستعمل الإضافة  -v  لإظهار

السطور التي لاتحتوي مفهوماً معيناً .

 

$ grep -v '7.$' adr

Susanne: Krieger 8:Jena:1:5:67

.............

 

        وهذه السجلات لاتحتوي (الرقم قبل الأخير) 7 .

head

 

إظهار بداية الملف:

 

برنامج  head  يُستخدم لإظهار أول الملف، والبرنامج  tail لإظهار آخر الملف. والبرنامج head

يمكن الاستغناء عنه ، لأن البرنامجين more و sed  يقومان بعمله.. انظر المثال التالي:

 

$ head -20 file

أو

$ sed 20q file

jobs

 

إظهار الأرقام الوظيفية:

 

% sleep 1000  &

[ 1 ] 120903

% vi  text

ندخل إلى برنامج الكتابة vi... ثم نوقف العمل به

(Ctrl -Z)

% jobs

[1]    - Running                   sleep  1000

[2]    + Suspended                 vi  tetx

kill

 

إزالة العمليات:

 

        في بعض الحالات يكون من الضروري إزالة إحدى العمليات المعلقة. وفي هذه الحالة

نستطيع استعمال الأمر kill الذي يزيل العمليات من النظام نهائياً . واستعمال  kill يكون

بإدخال الأمر ورقمِ العملية خلفه كإضافة . ورقمُ العملية نستطيع إظهاره بواسطة البرنامج  ps 

كما ذكرنا سابقاً. وهاك مثلاً لإزالة إحدى العمليات :

 

$ sleep 100  &

[1] 1479

$ ps

   PID TTY           TIME COMMAND

1470 ttyq4          0:01  csh

1483 ttyq4          0:00  ps

1479 ttyq4          0:00  sleep

$

$ kill 1479

[1]    Terminated           sleep 100

$ ps

   PID TTY           TIME COMMAND

1470 ttyq4          0:01  csh

1483 ttyq4          0:00  ps

$

 

        في الشكل أعلاه أدخلنا عملية للعمل الخلفي بواسطة & ورقمها 1479 ، وبواسطة ps

أظهرناها على الشاشة. وبواسطة kill أُزيلت العملية من النظام. وهكذا أَرسَـل  kill الإشارة

رقم 15 لإزالة العملية. ومن المستطاع حذف كثير من العمليات سوياً بإدخال الأرقام واحداً تلو

آخرَ  بعد الأمر kill  منفصلة بفراغ . والإشارة  signal رقم 15 يمكن تجاهلها من قبل النظام

إذا كان هناك أمر بالتجاهل ، ولكنَّ من المستطاع بالرغم من الأمر بالتجاهل  إزالةَ العملية

بإضافة -9 ، أي أن نُدخل رقم الإشارة9  للحذف  بعد الأمر kill ، ورقمَ العملية.

 

        وإليكَ مثلاً على ذلك :

$ runforever   &

[1] 2312

$ ps

   PID TTY           TIME COMMAND

2312 ttyq4          0:00  runforever

1470 ttyq4          0:01  csh

1483 ttyq4          0:00  ps

$ kill 2312

$ ps

   PID TTY           TIME COMMAND

2312 ttyq4          0:00  runfoever

1470 ttyq4          0:01  csh

1483 ttyq4          0:00  ps

$ kill  -9  2312

[1]    Terminated           runforever

$

 

        وجدير بالذكر أن العمليات غير قابلة للإزالة إلاّ من قبل مالكها ، ولكنَّ مدير النظام

root (superuser) يستطيع إزالة وإيقاف العمليات جميعها .

ln

 

ربط الملفات:

 

البرنامج  ln  يربط الملفات، وذلك بعملِ ملف نظري كصورة عن ملف معين، وليس كملف حقيقي .

وإذا تم تغيير محتوى أحد هذه الملفات فيتم تغيير محتوى الآخر تلقائياً ، لأن المحتوى واحد،

أي أن المحتوى والمعلومات موجودة مرة واحدة في وحدة التخزين، بخلاف ما ذكرناه عن البرنامج

cp ، الذي ينسخ الملف بكامل محتوياته فيصبح لدينا ملفان مستقلان. وهنا مثال لارتباط ملفين:

 

$ ls -F

ahmad mustafa kamal text

$ ln kamal kamal2                  وهنا يحصل الارتباط

$ ls -F

ahmad mustafa kamal kamal2 text/

$_

 

$ ls -L

- rw-r--r--   1 ziad           staf            380   13     Feb    08.10 ahmad

- rw-r--r--   1 ziad           staf            420   15     Mar   10.03 mustafa

- rw-r--r--   2 ziad           staf            80     20     Sep    11.12 kamal

- rw-r--r--   2 ziad           staf            80     20     Sep    11.12 kamal2

drwxr-xr-x 2   ziad           staf            384   20     Sep    10.11 Text

 

        وهنا أظهرنا ارتباط kamal  و kamal2  ¡ وتراه بظهور عدد الارتباط 2 ، وحجمُ الملفين

هنا 80 حرفا.

 

        ويظهر الارتباط جلياً بواسطة ls -i  ¡ ويظهر لنا رقم الملف المعتمد لدى النظام

كالتالي:

 

$ ls -i k* ahmad

320 ahmad

402 kamal

402 kamal2

$

 

        وهنا أرقام الملفين kamal و kamal 2 ¡ 402 ¡ ومعنى ذلك أنه الملف ذاته ، والصلة

تكون الارتباط فقط.

lp  (System  V)

 

إرسال الملفات إلى الطباعة الوسيطة:

 

بواسطة البرنامج lp نستطيع إرسال الملفات إلى spool:

 

$ lp filename

request id is matrix-75 1file

 

        والآن يُطبع الملف المعني على الطابعة matrix .

 

         ونستطيع إيقاف الطباعة:

 

$ cancel matrix-75

request "matrix-75" cancelled

 

        وهنا أدخلنا الأمر cancel واسم ورقم العملية ، لإيقافها في حال وجودها في صف

الانتظار (queue).

 

        وبواسطة الإضافة -d نستطيع إرسال الملف إلى طابعة أخرى:

 

$ lp  -dlaser   filename

 

ويوضع اسم الملف مباشرة بعد -d ¡ لكي يُطبع الملف بواسطة طابعة الليزر.

 

        وأثناء طباعة أحد الملفات يكون - أحياناً - من الضروري مواصلة العمل في ذلك الملف

، أو تغيير محتواه ، عند ذلك يجب استعمال الإضافة -c (وتعني copy) ،  كي تُنسَخ نسخةٌ إضافية

من هذا الملف ، وتُرسل إلى ملف الطباعة الوسيطة (spoolfile) ، لإدراجها هناك في الصف ،

ويتحررُ الملف الأصلي من قبضة ال spool.

 

        وإذا أردنا طباعة عدة نُسخ من أحد الملفات ، نُضيف عدد النُسخ إلى الإضافة (n) هكذا 

-n3 .

 

        بعد الانتهاء من طباعة أحد الملفات ، لايعلمنا البرنامج بانتهاء وظيفة الطباعة .

وللحصول على خبر message من النظام بانتهاء الطباعة ، نضيف  -m (mail) إلى سطر أمر

الطباعة لدى استعمال lp . وبذلك نحصل على إعلام بانتهاء وظيفة الطباعة .

lpstat System V

إظهار الطابعات:

 

        قبل الشروع في طباعة أحد الملفات نتأكد من وجود الطابعات في النظام بواسطة الأمر

lpstat :

$ lpstat -s

system default destination:matrix

device for matrix : /dev/lp0

device for laser   : /dev/lp1

device for plotter: /dev/lp2

 

        ويخبرنا البرنامج lpstat - هنا - بالطابعة التي تذهب إليها الملفات في العادة

(system-printer) ¡ أي إلى الطابعة matrix ¡ وذلك في حالة عدم توجيه الملف إلى طابعة

معينة مثل laser أو plotter.

 

        الطابعات المرتبطة في هذا النظام :

matrix    طابعة النقاط /dev/lp0

laser     طابعة الليزر /dev/lp1

plotter   المُخَطِط الراسم /dev/lp2

 

$ lpstat

matrix-75     ziad    prioity  0  Mar 13  13:20 on matrix

                filename                              3210

        وهذا يعلمنا بأن filename يُطبع الآن بطابعة الماتركس ، و حجمه 3210 أحرف .

ls

 

سرد الملفات:

 

يُظهر برنامج  ls  ما يحتويه الدليل من ملفات على الشاشة:

 

$ ls

personal    adress    telefon   staf

$

الشكل 6

 

        وبواسطة استعمال الإضافات تتنوع حالات الإظهار. وبعض هذه الإضافات كالرموز المُمَثلة (?

 * ) وتسمى meta character . وهذه الرموز تُعد بديلة عن الأحرف المقصودة في الكلمة عند

البحث عن أحد أسماء الملفات ، ومعنى ذلك أنه إذا أردنا إظهار قائمة الملفات بالأسماء التي

تبدأ بحرف معين مثل(p) نستعمل كتابة الأمر هكذا:

 

ls      p*

personal        peter

$

 

        وهنا نبين حالة استخدام علامة الاستفهام التي تنوب عن حرف واحد :

 

$ ls     persona?

personal

$

 

        وحالة اُخرى:

 

$ ls   pe??r

peter

$

 

وفي حالة وضع الإضافة (-a) يظهر لنا في اللائحة جميع الملفات، ومن ضمنها الملفات الخفية:

 

$ ls   -a

.          ..         .profile    personal       petor    adress    staf

$

 

فهرس الإضافات:

-a     جميع الملفات

-c     تاريخ آخر تغير ال Inode

-d     فقط أسماء الأدلة

-i     رقم Inode

-l     جميع المعلومات

-r     اقلب التصنيف التدريجي

-t     إظهر حسب الوقت

-u     تاريخ آخر قراءة للملف

-F     اظهر علامة النوعية

-R    إظهار محتويات الأدلة وما يليها من أدلة

mail

 

نظام البريد الإلكتروني:

        نظام البريد الإلكتروني يعمل كالبريد المتعارف عليه ، والمعلومات التي تُرسَـل

بواسطته  تكون متنوعة ، مثل ملفات البيانات والصور والموسيقى ...إلخ . وعملية الإرسال تُطبَّق

بشكل ملف يوضع باسم المستخدِم في الدليل /usr/spool/mail  ، ويكون اسم الملف مطابقاً لاسم

المستخدِم (user)  . والإرسالُ البريدي لايظهر على الشاشة مباشرة كالإرسال بواسطة write  و

talk ، ولكنه يُخزن في ملف البريد . وليس من الضروري أن يكون المرسَـل إليه موجوداً في

النظام في وقت وصول البريد الإلكتروني إليه ، لأنه سيجد بريده لاحقاً في ملف صندوق البريد .

 

        بواسطة البرنامج mail نستطيع إرسال وقراءة البريد . وفي بعض الأحيان يكون اسم

البرنامج mailx . وهناك أيضاً البرنامج elm (electronic mail)   وهذا الأخير لايحتويه النظام

يونيكس في العادة ، ويمكن الحصول عليه وإدخاله إلى النظام دون صعوبة أو تكاليف . وهناك

برامجُ مساعدةٌ لإرسال واستقبال البريد مثل  sendmail أو  smil  ، وهي برامج إضافية لإرسال

المعلومات عبر الشبكة الدولية أو المحلية  (WAN & LAN) . وهناك نوعان من برنامج mail  :

Systen V   و  BSD. وطريقة عمل هذه البرامج تكون إلى حد بعيد مطابقة لبعضها.

 

        طريقة إرسال البريد:

 

        إن طريقة إرسال البريد تشبه طريقة إرسال الأخبار المباشرة بواسطة write  . وإرسالُ

البريد بواسطة  mail  يتمّ بإدخال الأمر mail  واسم المستخدِم ، وبعد ذلك تُكتب الرسائل التي

تُوجه إليه :

 

$ mail max

Subject: catalogue of your range           عنوان الرسالة

Dear Max!

 

Your representative¡Mr smith¡ visited me recently¡ and

showed me same gamples of your new lines.

I should be grateful if you would send me a catalogue

of your range of christmas toys...............................

 

Yours faithfully ¡ Ziad Yousef

Ctrl-D                                        هنا ننهي العمل

Cc: mazen

 

        بعد   Cc:يُكتب اسم مستخدِم آخر لإرسال صورة إليه عن الرسالة ،  ويمكن إضافة أسماء

عدد من المستخدِمين بفصلهم بواسطة  الفاصلة (mazen¡ahmad،...........) .

                                               

        أثناء كتابة الرسالة يكون من المحتمل أن نوقف العمل بواسطة Ctrl-C أو Del  مرتين

، وبعد ذلك يُخزِّن النظام محتوى هذه الرسالة في ملف يسمى (الرسالة الميتة)  dead.letter في

دليل المستخدِم الخاص :

 

$ mail max

Subject: catalogue of your range

Dear Max!

 

Your representative¡Mr smith¡ visited me recently¡ and

Ctrl -C

(Interrupt ... one more to kill letter)

Ctrl-C

(Last Interrupt ...  letter saved in dead.letter)

$ cat dead.letter

Dear Max!

 

Your representative¡Mr smith¡ visited me recently¡ and

الشكل 56

 

        و نظراً لعدم استطاعتنا تصحيحَ ماكُتب خطأً ، فإنَّ من المستحسن استعمالَ المحرر لكتابة

الرسائل ، وإدخالَها بعد ذلك لإرسالها بواسطة mail .

 

        ولنفترض أننا كتبنا رسالة بواسطة المحرر vi باسم letter  فإننا - في هذه الحالة -

نُدخلها هكذا :

 

$ mail max  <letter

 

        ولايكون هناك عنوان للموضوع (subject) ¡ ويُرسَـل البريد إلىmax ¡ ويُؤخذ المحتوى من

الملف letter .

 

        أثناء العمل في برنامج mail التابع لنظام BSD نستطيع الدخول إلى vi مباشرةً ،

وتحريرَ الرسالة ثم إرسالَها ، وذلك أثناء عملية الإرسال :

 

$ mail max

subject: ORDER!

Dear Max

~r filename                         vi ندخل إلى البرنامج

[هنا نكتب ما نريد إرساله  ]

.

[ vi إنهاء الكتابة في  ] 

Ctrl-D 

Cc:

 

        وهنا طريقة لإرسال الملفات البينرية ( البرامج المجمَّعة ) بأن نحولَها أولاً إلى أحرف

بواسطة أحد برامج التحليل ، ونرسلَها بواسطة الأنبوب (|) إلى البرنامج   mail .

 

        لنفترض أنَّ لدينا ملفاً بينرياً يسمى  data  ،  ونريد إرساله إلى المستخدِم max :

 

$ uuencode data data.code|mail max

 

        والملف data يرسَـلُ مع التحليل في الملف data.code  ¡ ويحصل  max  على الملف مع

معلومات إضافية في أول وآخر الملف .

 

        ويجب على max  أن يعيد الملف إلى حالته الطبيعية بواسطة  uudecode ، بعد إزالة

المعلومات المتعلقة بالبريد الإلكتروني:

 

$ uudecode data data.code

 

$ uuencode data data.code هكذا نُظهر المحتوى

 

 

        الاطلاع على البريد القادم والمخزن :

 

        عندما يدخل المستخدِم إلى النظام بواسطة login ويكون له بريد في ملفه ، تظهر

المعلومات You have new mail أو  You have mail ، وذلك قبل ظهور المحث وإشارة الغلاف $ أو

% . وإذا أردنا في هذه الحالة قراءة البريد فما علينا إلا استعمال الأمر mail دون إضافات ،

ويظهر البريد على شكل لائحة بيانات للبريد الوارد ، مع اسم المُرسِل ، وتاريخ الإرسال ، وحجم

وموضوع الرسائل .

 

Login: ziad

Password: XXXXXXXXX

 

You have new mail.

 

$ mail

 

Mail  version 5.2+L.  Type  ? for help.

"/usr/spool/mail/ziad": 2 messages  2  new

>N    1      max  Thu     May   28  11:50   18/492  "catalogue"

  N    1      ziad  Wed     May   29  10:54   16/136  "coffee"

&

الشكل  57

 

        وهنا نرى لائحة البريد ،  ويُظهر لنا البرنامج mail الرسائل - واحدةً، واحدةً - في

حال ضغط المفتاح Returm :

 

& <Return>

Message  1  (of 2)

From mazen Thu     May   28  11:50  1993

Date:  Thu    May   28    92   11:50  MES

From:  mazen  (Mazen Yousef)

To:  max

 

Subject: catalogue of your range

Dear Max!

 

Your representative¡Mr smith¡ visited me recently¡ and

showed me same gamples of your new lines.

I should be grateful if you would send me a catalogue

 of your range of christmas toys...............................

 

Yours faithfully ¡ Ziad Yousef

 

(EOF)

 

& <Return>

Message  1  (of 2)

From mazen Wed    May   29  10:54  1993

Date:  Thu    May   29    92   10:54  MES

From:  ziad   (Ziad  Yousef)

To:  max

 

 

Subject: coffee

Hay Max !

I need a cup of coffee.

Ziad.

 

 

(EOF

&

الشكل 58

 

        ونستطيع إظهار الرسائل السابقة بإدخال  رقم الرسالة (message) بعد الإشارة & ،

ليعود البرنامج إلى إظهار الرسالة ( الرسالة رقم 1 مثلا ) . ولإنهاء العمل نُدخل q أو x بعد

الإشارة & . وإذا خرجنا بواسطة q يُحذف البريدُ من وحدة التخزين ، وبواسطة x يبقى البريد

مخزناً ، ونستطيع قراءته مرةً أُخرى بواسطة mail . وفي حال إدخال q تُحذف الرسالةُ من صندوق

البريد ، وتتواجد بعد ذلك في الملف mbox في دليل المستخدِم .

 

& q

Held   1 message in /usr/spool/mail/ziad

Saved 1 message in mbox

 

        هنا وضع البرنامج mail رسالةً في الملف mbox ¡ وحذفَ رسالة من صندوق البريد ziad .

ومن المستطاع حذفُ إحدى الرسائل بواسطة الإضافة d   ورقم الرسالة (& d1) .  وإذا خرجنا بعد

ذلك بواسطة q تحذفُ الرسالة نهائياً.

 

وإذا أردنا رؤية لائحة الرسائل مرة أُخرى نُدخل h :

 

& h

1 Max Thu Mag 15 12:10....................

>2...................

&

 

        وباستخدام حرف m بعد & مع إضافة اسم أحد المستخدِمين ، نستطيع إرسال بريد جديد :

 

& m max

 

        بعد ذلك يظهر لنا مكان الموضوع (subject) ، وبعدها  نكتب الرسالة كالمعتاد ...إلخ

، وننهي العمل  ب Ctrl -D .

 

        ومن الممكن الرد على الرسالة التي قرأناها أخيراً باستعمال (reply=r)  &  r :

 

& r

To: max

Subject :  Re : Order

.

.

.Ctrl-D

Cc:

&

 

        ويستعمل mail الموضوع ذاته بكتابةSubject :  Re : بدل الموضوع . وجميع إمكانات

البرنامج mail نستطيع رؤيتها باستعمال ?  & (أو & h  في بعض الأحيان وحسب نوعية برنامج

mail) .

 

man Manual

 

المعلومات المفصلة عن الأوامر:

 

$ man <command>                   <command> ضع الأمر بدل

 

صورة عامة عن الأوامر

Look in a printed manual for general help if you can. To get started.

refer to Using the AIX Oerating System manual.

 

The commands:

        man -k keyword     

lists commands relevant to a keyword

        man command                prints out the manual pages for a command

are helpful; other basic commands are:

        cat            - concatenates files (and just print them out)

        ex             - text editor

        finger         - user information lookup program

        ls              - lists contents of a directory

        mail           - send and receive mail

        passwd        - change login password

        sccshelp      - view information on the Source Code Control System

        tset            - set terminal modes

        who           - who is on the system

        write          - write to another user

you could find programs about mail by the command:   man -k mail

And print out the man command documentation via:      man mail

Zou can log out by typing control -d (if zour prompt is $)

or by typing logout (if your prompt is %)

mkdir

 

عمل دليل جديد:

 

        بواسطة الأمر (make directory)  mkdir نستطيع عملَ دليل جديد:

 

 

$ pwd

/usr/ziad

$ mkdir text2

$ cd text2

$ pwd

/usr/ziad/text2

$_

الشكل 8

 

        بذلك عملنا دليلاً جديداً منسوباً إلى الدليل/ziad   . ونظام يونيكس يسمح بوضع دليل

جديد شريطة حيازة الصلاحيات بذلك ، وشريطة أن لا يكونَ في الموقع نفسه دليل بهذا الاسم.

more

الاظهار التدريجي بالصفحة:

 

$ more file1 file2 file3

 

        وبهذا المثال نسطيع رؤية هذه الملفات الثلاثة واحداً تلو آخر ، وتظهر لنا عند

انتهاء كل صفحة عبارة --more--   مشيرة إلى أنَّ البرنامجَ more  ينتظر منا السماح بتواصل

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

المفتاح Return يظهر الملف سطراً بعد سطر.        ونستطيع أن نُظهر كل المعلومات المتعلقة

في البرنامج more على الشاشة ، بإدخال الحرف  h  (help) أثناء العمل بواسطة more  ، وذلك

على الشكل التالي :

 

Most commands optionally preceded  by integer argument k. Defaults in brackets.

Star (*) indicates argument becomes new default.

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

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

<space>                      Display  next  k  lines  of  text   [ current screen size ]

z                               Display  next  k  lines  of  text   [ current screen

size ]*

<return>                     Display  next  k  lines  of  text   [ current screen

size ]

d or Ctrl -D                   Scroll  k  lines [ current screen size¡ initially 11

]*

q or Q or <interrupt>         Exit  from  more

s                              Skip forward  k  lines of  text [1]

f                               Skip forward  k  screenfuls of  text [1]

b or Ctrl -b                   Skip backwrds  k  screenfuls of  text [1]

¡                              Go to place where previous search started

=                              Display current line number

/<regular expression>       Search for  kth  occurrence of regular expression[1]

n                              Search for  kth  occurrence of last r.e [1]

!<cmd> or :!<cmd>          Execute <cmd> in a subshell

v                              Start  up  /usr/ucb/vi  at current line

ctrl -L                         Redraw screen

:n                             Go to  kth  next file [1]

:p                             Go to  kth  previous file [1]

:f                              Display current file name and line number

.                              Repeat previous command

 

        ومن أهم هذه المعلومات الإضافاتُ s و f و   b  التي توضع أمام الأمر more:

 

إضافات more

           s    بعدها عدد السطور يقفز more إلى ما بعد ذلك العدد

        f       عدد الصفحات يقفز more إلى ما بعد هذا العدد من الصفحات         b       يعود

10 صفحات إلى الخلف أو  Ctrl -B صفحةً صفحةً

          q     إنهاء العمل في more قبل نهاية الملف أو  Ctrl -Q

        /       بحث عن كلمة أو مصطلح بعد الفاصلة /word  وتليها Return

                 n ويعاد البحث

        !       بعد هذا الرمز نستطيع إدخال أي أمر موجود في النظام ،                    

        ونعودَ إلى more

          n     يظهر لنا الملف الآتي في حالة تعدد الملفات

           p    يظهر لنا الملف السابق 

           f    يظهر لنا الملف الحالي

          =    تعيد لنا آخر أمر أدخلناه

          Ctrl -Lيعيد لنا بناء الشاشة

mv

تغيير اسم الملف :

 

        يُغير الاسم بواسطة البرنامج(move) mv  . مثال: هناك ثلاثة ملفات samir¡ kamal¡

mustafa  :

$ ls

kamal mustafa samir

$ mv samir muhdi

$ ls

muhdi mustafa kamal

 

        وهكذا تغيّر اسم samir إلىmuhdi  ¡ وبالمثال التالي نستطيع نقل الملف إلى دليلٍ آخرَ

، وباسمٍ آخرَ:

$ ls

muhdi museafa kamal

$ mkdir text                               نعمل دليلاً جديداً

$ ls -F

muhdi mustafa kamal text/

$ mv muhdi text

$ ls -F

mustafa kamal text/

$ ls text

muhdi

 

        في هذا المثال عَمِلنا دليلاً جديداً باسم /text ، ونقلنا muhdi إليه ، واختفى muhdi

من الدليل الحالي ، لأنه أصبح في الدليل /text   ، ونستطيع نقل ملفات كثيرة باستعمال ( * و

? ) ، وقد ذكرنا سابقاً كيفية استعمال هذه الرموز.

nice

صلاحيات ومرتبات العمليات:

        نستعمل nice  لتغيير مرتبة عمل العمليات . و/usr/bin/nice  برنامج مستقل ، والأمر

nice يكون مزوداً به غلاف العمل.

        إنَّ المرتبة هي أولوية العمل لدى وحدة العمليات والمعالجة والتحكم ، وكلما كانت

المرتبة أعلى كان إنجاز البرنامج أسرعَ في العمل. ودرجات الأولوية أو المَرتَبة تكون عادة

مابين 0 إلى 19. والصفر يعني مرتبة عادية standard ، وزيادة العدد يقلل الأولوية. أما

بالنسبة إلى مدير النظام ، فمن حقه تصعيد الأولوية من صفر إلى تحت الصفر  (إلى ناقص 20- ).

 

        الاختلاف النحوي للأمر  nice والبرنامج  /usr/bin/nice يكون على النحو التالي:

$ /usr/bin/nice  -12 cc -c *.c   &

[1] 1933

 

        أدخلنا برنامجcc  للعمل بأولوية 12 بواسطة البرنامج nice ¡ وبرنامج  cc  هو مترجم

البرامج للغة البرمجة C ¡ وهنا نترجم compiling الملفات التي تنتهي بحرف  .c   ووضعنا *

في المقدمة بدل الأسماء ، وأنهينا الإدخال ب & للعمل الخلفي . ويظهر رقم العملية الوظيفي

بين زاويتين [ ] والرقم النظامي بعد ذلك.

% nice   t12   cc   -c   *.c   &

         أدخلنا الأمر nice التابع لغلاف سي C-Shell  ونستعمل (  (t بدل (-) قبل مرتبة

الأولوية.

od

 

الإظهار البينري:

 

        وإذا أردت أن تُظهر أحد الملفات التي تحتوي على أحرف غير الأحرف ما بين 0 إلى 127 ،

فيجب استعمال البرنامج  od  (octaldump) ¡ وليس البرامجِ التي عالجناها في السابق مثل  cat

¡ more ¡ ps ¡ tail ¡ .

 

        وبرنامج od يُظهر لك محتويات الملف المطلوب إظهاراً بينرياً ، أي بالأرقام والرموز

حسب تواجدها في الملف، ويظهر  كل Byte  على حدة بموجب ال ASCII-CODE . وباستعمال الإضافة 

-a يكون الإظهار كما هو في قائمة ASCII-CODE، وباستعمال الإضافة-b   تَظهر لك كل الأحرف

بينرياً ، وباستعمال الإضافة  -cيكون الإظهار كما هو متعارف عليه بلغة البرمجة  C، أي أنّ \n 

 تعني linefeed=LF  ، و \0  تعني    NUL إلخ...  وباقي الأحرف تظهر بالعدّ الأوكتالي (octal)

 (8^2) ، وباستعمال الإضافة -h  تَظهر كل الأحرف بالعدّ (هكسا)  (hexadecimal) (16^2).

 

        وإليكَ بعض الأمثلة للتوضيح:

 

$ od -a filename

0000000    soh  etx  soh   bs  nul  nul  enq    8  nul  nul  etx    p  nul  nul  nul

 

$ od -b filename

0000000  201 003 001 010 000 000 005 270 000 000 003 120 000 000 000  000

 

$ od -c filename

0000000 201  003  001   \b   \0   \0  005  270   \0   \0  003    p   \0   \0   \0   \0

 

$ od -h filename

0000000 8103  0108  0000   05b8  0000   0350  0000  0000

 

        وإذا أردنا تخزين الأعداد أكثر من 255 ، فيجب تخزينها في عدة Bytes .

 

        على سبيل المثال : يمكن تخزين العدد من 0 إلى 65535  في Bytes 2 (1-16^2) ¡ وتكون

هذه مقسمة إلى Low-Byte وHigh-Byte  ¡ وتضرب High-Byte  في 256 (=8^2) بالإضافة إلى Low-

Byte لنحصل على النتيجة . وبهذا يمكن تخزين الأرقام التي تزيد عن ذلك وتُجمع فيByte 4 

إلخ...

 

        وإليك بعضَ الشرح لإظهار هذه الأرقام:

 

        أرقام ذات اثنين  Byte دون علامة  أو مع -  :

 

$ od -d filename

0000000  33027  00264  00000  01464  00000  00848  00000 00000

 

        وفي الآتي يظهر أل Bit الأول من  High-Byte كرمز - أو + (ناقص أو زائد).

$ od -i filename

0000000  -33027    264             0    1464            0        848           0       

   0

 

        وهنا أعداد في Byte مع علامة (-) :

 

$ od -l filename

0000000  -330278765              1464           8488             0

 

        وهنا أعداد مع فاصل:

 

$ od -f filename

0000000   -3.3027876e-45  4.0606406e-43  1.7684876e-52  0.0000000e+00

 

        وإذا استعملنا البرنامج od دون إضافة ، فتظهر الأرقام في  octal dump (Byte 2) :

 

$ od filename

0000000  033027  000264  000000  001464  000000  000848  000000 000000

 

        والإظهار للمعلومات والعمل بها في يومنا هذا يكون غالباً بتعداد الهكسا

hexadecimal.

passwd

 

كلمة المرور:

 

        كلمة المرور هي "مفتاح الخزنة" ، وعندما تكون معروفةً من قبل المستخدِم يكون من

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

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

وأرقام ورموز يتعين خلطها كبيرةً وصغيرةً ، ولا تضع أسماء معروفة أو كلمات من القاموس أو أي

مرجع معروف ، واستعمل الرموز مثل  !@#^&*)(.. وكما تلاحظ (الشكل 4 تالياَ) ، فإنه يمكن

تغيير كلمة المرور في أي وقت باستعمال أمرpasswd .

 

$ passwd

Changing password for ziad

Old password:

New password:

Re-enter new password:

$

الشكل 4

 

        إن برنامج passwd   يطلب أولاً كلمة المرور الحالية old password¡ ثم الكلمةَ

الجديدةnew passwod  ¡ ويعاد كتابتها للتأكد  Re-enter password  ¡ وبعد ذلك تكون الكلمة

الجديدة هي المعتمدة في حالة دخولٍ  جديدٍ إلى النظام .

 

pg

 

        هنا نقدم شرحاً عن برنامج pg ¡ وهو يشبه more إلى حد ما. ونستطيع إدخال (pg  file 

) لكي يَظهرَ لنا الملفُ صفحةً صفحةً على الشاشة .

 

        وبواسطة الحرف h  يظهر لنا المرجع كما يلي:

 

h                              help

q or Q                         quit

 

<blank> or  \n                next page

l                               next line

d or  ^D                      display a half page more

. or   ^L                      redisplay current page

f                               skeep the next page foward

n                              next

p                              previous file

$                              last page

w  or  z                        set window size and display next page

s  savefile                    save current file in savefile

/pattern/                      search forward for pattern

?pattern? or ^pattern^ search backward for pattern

!command                    execute command

 

        مفتاح Return يظهر لنا الصفحة التالية  ( Return مكتوب في الأعلى بشكل \n  ¡ وهذا

يشبه الإدخال في لغة C) ¡ وإدراج السطر بحرف L  إضافة إلى عدد السطور القادمة ( L  5) ¡

وبواسطة علامة الطرح -( L -5 )   تظهر السطورالسابقة ، وإدخال 10 و Return  يظهر 10 صفحات

متتابعة،   وإدخالُ حرف  f يُظهِرُ الصفحة القادمة ، ورمز الدولار $ يُظهِرُ آخر صفحة  سابقة في

الملف.

 

        والبحث عن إحدى الكلمات يكون بإدخال الكلمة ووضعها داخل فاصلتين. فعلى سبيل

المثال ، إذا أردنا البحث عن كلمة House  فيجب كتابتها هكذا  /House/  ، وضغط Return  .

وإعادة البحث  تكون بواسطة // .  كما نستطيع البحث عن كلمة ما عكسياً ، أي  من آخر الملف

إلى أوله بكتابة الكلمة هكذا  ? House/ مع علامة الاستفهام بدل الفاصلة.

 

        وباستعمال الحرف n  أو الحرف p  نستطيع القفز مابين الملفات - في حالة إظهار

العديد منها - ، وبالإمكان إدخال الأوامر بعد علامة ! ،وننهي البرنامج بحرف q  أو  Q .

ونستطيع تخزين الملف الظاهر باسم آخر ¡ إذا كتبنا الحرف  s وبعده فراغٌ ، ثم الاسمَ (s

file2) .

 

        والبرنامجان more و pg يعملان مع برامج أخرى للإظهار ، مثل برنامجls    وغيره ،

بواسطة استعمال الاُنبوب (|) pipe . مثال على ذلك :

 

$ ls -al | more

$ ls -al | pg

 

تظهر لنا - في الأعلى - قائمة الملفات بالصفحة، وفي هذه الحالة يجب فصل البرامج  باستعمال

الاُنبوب (|) pipe ، وهي موجودة في أغلب لوحات المفاتيح ، ورقمُها 124 من ASCII-Code .

ps System  V   ps BSD

 مراقبة العمليات :

 

        بواسطة البرنامج ps   نستطيع إظهار العمليات القائمة على العمل في النظام ،

والعملياتِ الخاصة بالمستخدِم. ونحن لانستطيع ذكر جميع الإمكانات المتعلقة باستعمال البرنامج 

ps (اقرأ ال manual)، ولكن سنذكر أهم هذه الإمكانات. وهناك أيضاً اختلاف بين نظام  system V

ونظام BSD ، أما بالنسبة إلى نظام AIX فتجد الاحتمالين. وهاكَ شرحاً عن البرنامج ps في نظام 

BSD-UNIX.

 

        لدى إدخال الأمر ps دون إضافات ، تظهر العمليات الخاصة بالمستخدِم فقط ، وهي تحمل

رقم المستخدِم في UID :

$ ps

  PID TT     STAT TIME COMMAND

9375 p7     S              0:05  -csh

9416 p7     S              0:00  sleep 100

9417 p7     S              0:03  sh

9418 p7     R              0:00  ps

 

        نرى - هنا - عملية استعمال الغلاف csh ¡ ثم عملية انتظار 100  sleep¡ وبعد ذلك

تشغيلَ غلاف   sh  Bourne ¡ ونرى أيضاً أرقام العمليات PID ¡ والمطرافَ التابع لهذه العملية

TT (p7) ¡ والحالةَ  STAT (status) ¡ والمدةَ الزمنية (TIME) .

 

        والمطراف المذكور في الأعلى p7  يكون في الواقع ttyp7 . والمطراف الرئيسي إذا ذُكر

يكون مختصراً بحروف (console) co ، وعمليات  demon-process  تُختصر برمز علامة الاستفهام ?

بدل المطراف .  وتعني R أن هذه العملية تُنجَزُ الآن بوحدة العمليات والمعالجة (processor)  ،

أو أنها في حالة انتظار . وهناك حروف  I¡D¡S  بدل R .

 

D =   انتظار من أجل معلومات تُقرأ من وحدة التخزين

S =  انتظار 20 ثانية أثناء العمل في البرامج

I  =   ولكن مدة الانتظار أكثر من 20 ثانية  s مثل

 

        وبحرف T تكون العملية موقفة مؤقتاً مثل حالة  Ctrl-Z (^Z). وهناك حالات لها حرفان ،

يكون الحرف الثاني منها فراغاً ، أو حرف W . وحرفW  يعني أن هذه العملية مرفوعة من وحدة

الذاكرة ، ومخزنة في swapped وحدة التخزين  لحين العمل بها. وفي أغلب الأحيان يكون الحرف

الأول لهذه الحالة (I) . وتُخزن هذه العمليات في وحدة التخزين لتوسيع المجال في وحدة

الذاكرة (RAM)  للعمليات المستعجلة.

 

        بواسطة الإضافة -a نستطيع رؤية جميع العمليات التي لها صلة بالمطراف:

$ ps  -a

  PID TT     STAT TIME COMMAND

7189 co     IW            0:00  -csh

7215 co     R              0:23  irc

8889 p0     IW            0:03  -sch

.......

9417 p7     S              0:02  sh

9419 p7     S              0:05  ps  -a

 

        ونرى - هنا - عملية تابعة إلى (console) المطراف الرئيسي المتوقف عن العمل ، وهو

في حالة انتظار لأنه لا أحد يعمل على هذا المطراف  co . وانتبه أيضاً إلى المطراف ttyp0  (

العملية الثالثة من الأعلى) وحالتِها IW  ¡ أي أن هذه العملية منزوعة من وحدة الذاكرة (RAM)

¡ ومدرجة في وحدة التخزين.

 

        بواسطة الإضافات -ax  نستطيع رؤية جميع العمليات القائمة:

 

$ ps  -ax

PID           TT     STAT TIME COMMAND

      0        ?      D              0:35  swapper

      1        ?      IW            0:07  \bin\init

      2        ?      D              0:16  pagedaemon

    53 ?      IW            0:05  portmap

    93 ?      IW            0:04  syslogd

.......

9417 p7     S               0:02  sh

9419 p7     R              0:00  ps  -a

$_

 

        نرى جميع العمليات في النظام ، بالإضافة إلى عمليات النواة مثل PID1  ¡ واسمها

/sbin/init (العملية الثانية من الأعلى) ، وعملية swapper  العملية الأولى للنظام (PID 0) .

 

        ولكي نحصِّـل معلومات أكثر عن العمليات الخاصة بالمستخدِمين نضع الإضافة -u:

 

$ ps  -u

USER PID  %CPU %MEM SZ  RSS   TT   STAT   START   TIME   COMMAND

ziad   9375   0.0   0.0  204    0               p7   IW        22:01    0:04    -csh

ziad   9417   0.0   0.4  024 108               p7    S         22:05    0:02    sh

ziad   9423   0.0   0.4  184 424               p7    R 22:06    0:00    ps  -u

ziad   9416   0.0   0.0    16    0                p7   IW        22:05    0:05    sleep 100

$

 

        وهنا نرى المستخدِم USER  ¡ ووقت بداية العمل للعملية START ¡ والنسبة المئوية من

وقت الوحدة المركزية %CPU ووقت وحدة الذاكرة %MEM.  وهذا يساعدنا على معرفة العمليات التي

تأخذ أوقاتاً???? طويلةً من وقت الحاسوب الثمين . وهناك SZ وRSS  التي تُظهر لنا كمية وحدة

الذاكرة (RAM) الضرورية للعمل . وإذا أردنا معلوماتٍ مفسرة أكثر نضع الإضافة  -l:

 

$ ps -l

        F   UID PID     PPID CP PRI NI SZ RSS WCHAN STAT TT TIME  COMMAND

20488200  207 9375  9374  0   15    0 204   0  kernelma  IW   p7  0:04   -csh

20008200  207  9416  9375  5  15   0 204    0  kernelma  IW    p7  0:04   sleep 100

20008001  207  9417  9375  0    5   0 204 108  child          IW    p7  0:04   sh 

20000001  207  9422  9417 17 29  0 204 436                     IW    p7  0:04   ps  -l

 

         نرى - هنا - بجانب PID الرقمPPID  وهو رقمُ الوحدة الأم ،  والعددَ الذي يُفصح عن

مرتبة كل عملية ، أي أنَّ صُغر العدد يعني أولوية أقوى ، والمالكُ يظهر هنا كرقم (UID) .

 

         نشرح - فيما يلي - برنامج ps من خلال النظام System V ¡ والبرنامجُ ps يشبه ما

اطلعنا عليه في الصفحات السابقة، من حيث المبدأ، ولكن هناك بعض التغييرات البسيطة:

 

$ ps

   PID TTY           TIME COMMAND

1479 ttyp4          0:00  sleep

1470 ttyp4          0:01  csh

1483 ttyp4          0:00  ps

1480 ttyp4          0:00  sh

$

        في الشكل 29 يظهر المطراف باسمه الكامل ، ولا تظهر الحالة (status) .

 

        وإذا أردنا أن نرى جميع العمليات نستعمل الإضافة-e  ¡ والنتيجة تشبه إلى حد بعيد

ماذكرناه عن نظام BSD بإضافة  -axلبرنامج ps:

$ ps  -e

   PID TTY           TIME COMMAND

      0        ?              0:02  sched 

      1        ?              2:07  init

      2        ?              3:12  vhand

      3        ?              0:39  bdflush

    39 ?              0:15  syslogd

  185 ?              1:45  cron

.......

1469 ttyq4          0:01  telnetd

.......

1480 ttyq4           0:02  sh

1484 ttyq4           0:00  ps

 

        في الشكل 30 نرى جميع العمليات العاملة حالياً ، بالإضافة إلى عملية  sched ¡ التي

تمثل نواة النظام ، والتي تدير العمليات . وهناك الإضافة -f  لرؤية مزيد من المعلومات :

$ ps  -f

UID   PID   PPID C  STIME       TTY     TIME   COMMAND

ziad 1479  1470  0   09:50:41    ttyq4    0:00   sleep 100

ziad 1470  1469  0   09:15:09    ttyq4    0:04   -csh

ziad 1485  1480 13  09:05:12    ttyq4    0:00   ps  -f

ziad 1480  1470  0   09:12:20    ttyq4    0:02   sh

 

        وفي الشكل 31 تظهر معلومات مالك العملية  UID  ¡ ورقم العملية PID ¡ والعملية الأم

PPID  ¡ ووقت بدء العمل STIME ¡ واسم العملية مع الإضافات COMMAND ¡ والمطاريف TTY :

 

 الإضافة -l:

$ ps -l

 F   S UID   PID  PPID  C   PRI NI  P SZ:RSS WCHAN    TTY  TIME COMD

30  S  207  1479 1470  0    39  20  *  10:03                     ttyq4 0:00 sleep

30  S  207  1470 1469  0    39  20  *  52:27     801099d8  ttyq4 0:00 csh

30  R  207  1486 1480  0    66  20  0  36:35                    ttyq4 0:00 ps

30  S  207  1480 1470  0    30  20  *  23:24     80101428 ttyq4  0:00 sh

 

        في الشكل 32 نرى حالة العملية S ¡ وهذه حالةُ انتظار ، وO  العملية في حالة عمل ،

وR  انتظار مؤقت ، و T العملية موقفة. وبدل اسم المستخدِم UID  تجد الرقم والمرتبة أسفلPRI

 ، والرقمُ الأصغرُ يكون هنا أيضاً ذا مرتبة أعلى.

pwd

 

 أدلة العمل الحالية :

 

        إذا أدخلنا الأمر  pwd بعد المحث ، يبلغنا النظام اسمَ الدليل المعمول به حالياً. و

pwd  تعنيprint workings directory  ¡ أي أن اسم الدليل الذي نتواجد به يظهر على الشاشة

على النحو التالي:

 

$ pwd

/usr/ziad

$

الشكل 7

 

        وهذا يعني أنَّ دليل العمل الحالي هو /ziad ¡ وهو دليل فرعي من دليل /usr .

 

        وهنا لا بد من الإشارة إلى أنَّ كلَّ مستخدِم في نظام يونيكس له دليلُ عمل خاصٌ يسمى  home

directory  ¡ وعندما يسجل مدير النظام مستخدِماً جديداً، فإنه يسجل له دليلَه الخاصَّ والذي

يكون دليلاً فرعياً من دليل  /usr أو  /home  ، و يحمل اسم المستخدِم الجديد.

rcp

 

نسخ الملفات من خلال الشبكة:

 

البرنامج rcp الذي يعمل كالبرنامج ftp ¡ ولكنه يحتاج للدخول بالمواصفات نفسها كما هو

الحال في البرنامج rsh (انظر في الأعلى) . ومن ميزات هذا البرنامج نسخ الملفات مثل cp

(copy) من خلال الشبكة . من وإلى الحاسوب البعيد :

 

$ rcp text abakus:tmp/text

 

        اطبع أو انسخ الملف text من حاسوبنا إلى الملف text ¡ في الدليل /tmp ¡ في

الحاسوب abakus البعيد.

rlogin

 

الدخول إلى الحاسوب البعيد:

 

        البرنامج rlogin بديل لبرنامج telnet ¡ وهو يعمل مابين أنظمة يونيكس فقط . وإذا

اضطررنا للعمل بواسطة نظام التشغيل  MS-DOS  ¡ أو أي نظامٍ آخرَ ،  من خلال التحويل

emulation ¡ فيستحسن استعمال telnet .

 

        ولكي ندخل إلى الحواسب البعيدة بواسطة rlogin ، نُدخل اسم أو رقم الحاسوب البعيد

(أنظر في قسم telnet كيفية الدخول) ، ويأخذ برنامج rlogin اسم وكلمة مرور الشخص الداخل

إلى الحاسوب البعيد من الملف passwd من حاسوب المستخدِم هناك . ولسنا بحاجة إلى إدخال الاسم

، أوكلمة المرور في حال تطابق الاسم وكلمة المرور الموجودة هنا وهناك . وإذا عملنا باسم

آخر إضافيٍّ في الحاسوب البعيد فيجب إدخاله بواسطة الإضافة -L ، ويتبعها الاسم الآخر ، ورقمُ

الحاسوب البعيد في الشبكة :

$ rlogin -L ziad  180.70.40.16

ونستطيع إلغاء السؤال عن كلمة المرور بأن ندخل أسماء الحواسب البعيدة ، وأسماءَ الأشخاص

القادمين منها في الملف .rlhosts الذي يجب وجوده في الدليل الخاص لكل مستخدِم

(Homedirectory) .   ومحتوى هذا الملف يكون مثلاً هكذا :

 

        abakus        ziad          

        abakus        mazen

        jordsys        ziad           

        kaktus        mazen

 

ومحتوى الملف يُفسَّر هكذا :

 

        إذا كان  ziad هو القادم من الحاسوب abakus ¡ فإنه يحق له الدخول باسم مالك الملف

، وإذا كان القادم من الحاسوب abakus اسمه mazen ¡ فإنه يحق له الدخول باسم مالك الملف

أيضاً . وإذا كان القادم من الحاسوب jordsys اسمه ziad ¡ فإنه يحق له الدخول باسم مالك

الملف . وإذا كان القادم من الحاسوب kaktus اسمه mazen ، فإنه يحق له الدخول باسم مالك

الملف .  وهنا يجب الحرص على سرية الأسماء ، لأنَّ من الممكن دخولَ غرباء إلى النظام في حال

معرفة أحد هذه الأسماء ، لذا يجب الحذر قبل عمل الملفات .rhosts و /etc/hosts.equiv .

 

وهنا مثال للدخول بالطريقة التي ذكرناها في الأعلى :

 

$ rlogin abakus                      abakusإلى  jordsys ندخل من

Password:

Last login: Thu Fed 20 13:18:16 from 180.70.40.2

abakus$                              abakusنحن الآن في الحاسوب

..........                                     نقوم بالعمل المعتاد

abakus$ logout                      abakus خرجنا من الحاسوب

Closed connection.

$                                      jordsys نحن الآن في الحاسوب

الشكل 74

 

        وعلامة الخروج من الاتصال أوالانقطاع escape تكون في هذا البرنامج  اشارة ~  تلحقها

نقطة  ~. .

rm

 

إزالة وحذ ف الملفات :

 

        يتم ذلك بواسطة الأمر  (remove) rm ¡ حيث نستطيع إزالة الملفات من الدليل الحالي

أو من أحد الأدلة الأخرى.

 

$ ls -F

ahmad kamal kamal2 mustafa text/

$ rm ahmad

$ ls -F

kamal kamal2 mustafa text/

 

        الملف ahmad لم يعد موجوداً في الدليل. ونستطيع حذفه من الدليل /text  أيضاً:

$ ls text

ahmad muhdi

$ rm  text/ahmad

$ ls text

muhdi

$_

 

        ونستطيع أيضاً استعمال ( * و ? ) لحذف عدة ملفات، ولكن يجب الحذر من ذلك ، لأن هناك

احتمالاً لحذف كثيرٍ من الملفات باستعمال النجمة (*) .

 

        بعد حذف الملفات تضيع المعلومات الموجودة بها إلى غير رجعة. وننصح باستعمال

الإضافة   -i لمنع الحذف التلقائي ، وللإجبار على إعطاء الموافقة أثناء إزالة الملف المعني.

 

$ rm -i mustafa

mustafa ? n                   n  رفض الحذف

 

        وبهذا لم يُحذف الملف لأننا وضعنا n وليس y (yes  &  no)

rmdir

إزالة وحذ ف الأدلة:

 

الأدلة تحتوي ملفات مختلفة النوعية،  وإذا أردنا إزالة أحد هذه الأدلة ، فيجب إفراغها من

الملفات أولاً بحذف جميع الملفات والأدلة الفرعية الموجودة داخلها ، ويتم ذلك بواسطة الأمر

(remove directory)  rmdir  ، أو مع الإضافة  -r التي تزيل الدليل ومحتوياته. وهذا خطر جداً

ويجب الحذر قبل استعماله. ولا أنصح بذلك قبل التأكد من محتويات الدليل.

 

$ ls -F

kamal kamal2 mustafa text/

$ rmdir text

rmdir: text not empty        لا يُحذف الدليل لاحتوائه ملفات

$ rm text/*

$ rmdir texte

$ ls -F

kamal kamal2 mustafa

$_

        لاحظنا في المثال الأعلى أنه لم يحذف rmdir الدليل لأنه يحتوي ملفات ، وبعد إفراغه

بواسطة rm  ¡ أعدنا الحذف بواسطة rmdir . لكن ماذا يحدث لو استعملناrm -r    ؟

 

$ ls -F

kamal kamal2 mustafa text/

$ rm -r text

$ ls -F

kamal kamal2 mustafa

        لقد حُذف الدليل ومحتوياته في آن معاً  !

 

        ولو كانت هناك أدلة منسوبة إلى الدليل  /text لحُذفت أيضاً ، دون معرفة ما بداخلها

من أدلة وملفات، ولذلك احذر استعمالrm -r  ¡ لأنه يُعتبر من أخطر الأوامر على الإطلاق.

 

على سبيل المثال : لو أن مدير النظام  root أدخل الأمر كالتالي   rm  -r /  ¡  لحُذفت جميع

الأدلة عن بكرة أبيها من النظام ، وهذا يعني أن النظام قد دُمِّر نهائياً.

rsh / rcmd

 

إدخال أمر إلى الحاسوب البعيد:

 

        البرنامج rsh  يُستخدم لإدخال أمر واحد فقط إلى الحاسوب البعيد ، كما ذكرنا في

الأعلى ، ولكن بشرط الدخول بواسطة محتويات الملف rhosts  وبدون كلمة مرور .

 

والقيام يإدخال الأمر للحاسوب البعيد يتم هكذا :

$ rsh abakus date      

 

        ونطلب هنا التاريخ date من الحاسوب البعيد abakus ¡ ونستطيع تحويل الإخراج إلى ملف

للاحتفاظ به .

 

        إخراج المعلومات إلى الملف filename في حاسوبنا :

 

$ rsh abakus date >filename

        إخراج المعلومات إلى الملف filename هناك

 

$ rsh abakus date " >" filename

        وهكذا نستطيع استعمال جميع أوامر النظام الأخرى التي عرفناها بواسطة rsh .

 

        والبرنامج rcmd له ذات المفعول .

ruptime

 

إظهار الحواسب المرتبطة في الشبكة:

 

        البرنامج ruptime يُظهر لنا الحواسبَ المرتبطةَ في الشبكة، وعددَ المستخدِمين ،

والأوقاتَ ، وكثافةَ العمل التي تظهر برقم (أقل من 1.00 عمل قليل، أكثر من 1.00 عمل كثير):

 

$ ruptime

snoopy        up 34+03:42¡         2 user¡        load 2.16¡ 2.03¡ 2.00

kaktus        up 9+02:12¡           2 user load 2.50¡ 2.28¡ 2.17

gnom  up 11+08:22¡         1 user¡        load 0.80¡ 0.90¡ 0.92

zarkasys      down                          غير عامل حالياً ولكن مسجل

rwho

 

المعلومات المتعلقة بالعاملين في الشبكات:

 

        وبواسطة rwho نستطيع الحصول على المعلومات المتعلقة بالمستخدِمين في الشبكات

المرتبطة ببعضها .

 

$ rwho

ziad    jordsys:ttyp0         Feb 21 19:14

karl           jordsys:console              Feb 21 19:05

conny snoopy:ttyp2         Feb 21 17:12

af              kaktus:ttyp0         Feb 21 18:50

bertram       gnom:ttyp0           Feb 21 18:43

sed

 

محرر لتغيير بعض الكلمات في أحد الملفات:

 

        البرنامج sed محرر ضعيف القدرات ، نغير بواسطته بعض الكلمات في ملف ما ، كمكان

الميلاد في الملف   adr  من  Berlin  إلى Dortmund  .

 

مثلاً:

$ sed s/Berlin/Dortmmund/ adr

 

        يَظهَرُ لنا الملف كالسابق ولكن مع  Dortmund بدل Berlin ¡ ويجب استعمال < إذا أردنا

وضع الإخراج في ملف آخر.

 

        ويمكن تحديد التغيير في السطور من 1 إلى 4 :

 

$ sed 1¡4s/Berlin/Dortmund/  adr

.

        ويمكن استعمال الإضافةq  وd  :

 

$sed    5q   adr

 

        يظهر أول 5 أسطر .

 

$ sed  4¡6d  adr

 

        إظهار السطور جميعها ماعدا 4 إلى 6 .

sort

 

تصنيف الملفات:

 

        يكون ضرورياً في بعض الأحيان ، أو بالأحرى في أغلبها ،  تصنيف المعلومات الواردة في

السجلات لتبسيط العثور على محتوياتها ، وعمليات التصنيف والترتيب هذه يقوم بها البرنامج

sort  .

 

        لنفترض أننا الآن بحاجة إلى تصنيف الملف adr الذي يحتوي على سجلات أشخاصٍ (أسماء

وعناوين ومكان وتاريخ الميلاد) ، وإذا أردنا ترتيباً حرفياً لكل من الاسم الأول واسم العائلة

أو العكس ، فإننا نقوم بما يلي :

 

نجعل sort يُخرج التصنيف إلى ملف جديد ، نضع به الترتيبات الجديدة ، ويرسل   sort التصنيف

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

الرمز <  واسم الملف الذي نريد أن نُخرج إليه التصنيف ( أو نستعمل الإضافة  -o واسم الملف )

.

 

         وإدخال كيفية التصنيف تكون كالتالي:

+field1.character1   -field2.character2

مجال1+ . حرف التصنيف1   .مجال2-  حرف التصنيف2

 

        وهذا يعني: بداية التصنيف + ، والنهاية - ، من كل مجال ،  ويمكن إدخال الحروف

التي يجب تصنيفها character . فمثلاً  +1 -2 يعني أنه يجب بداية التصنيف في المجال الثاني ،

وينتهي التصنيف لدى الوصول إلى بداية المجال الثالث . ومن الممكن تحديد التصنيف بوضع

الحرف من محتوى المجال ، ووضعِ نهاية التصنيف بذات المجال مثل) 1.5-  +1.3 ) ، و يعني ذلك

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

وبرنامج sort   يَفهمُ في العادة أن المجالات منفصلة بفراغ أو بفراغ موسع (Tab) ، ولذلك يجب

إعلام البرنامج عن نوعية انفصال المجالات (في النقطة المزدوجة : مثلاً) . وباستعمال الإضافة 

-t وبالرمز المتفق عليه (:) نستطيع إعلام sort بذلك . والبرنامج sort يُصنِّف حسب ترتيب ال 

ASCII-Code  . ومن المستطاع عدم التفريق ما بين الحروف الصغيرة والكبيرة بواسطة استعمال

الإضافة-f  ، فإذا أردنا ترتيب الأرقام فيجب استعمال الإضافة -n   ، لأنه بخلاف ذلك يكون

التصنيف خاطئاً.  وإذا أردنا أن نبدأ التصنيف بالحرف الأخير من الأبجدية فإننا نستعمل الإضافة

-r   التي تقلب التصنيف لتجعله عكسياً ، أي Z في الأول ، و A في الأخير.

 

        ونقدم الآن بعض أمثلة التصنيف باستعمال الملف adr :

 

$ sort adr

Anneliese:Zimmermann:Bachstr. 24:Berlin:13:4:34

David:Goldstein:Florastr. 7:Essen:8:11:38

....

Otto:Schneider:Taubenweg 2:Berlin:10:5:47

Susanne:Krieger:Fischerweg 8:Jena:1:5:67

Thomas:Meier:Forstweg 1:Stuttgart:7:10:81

Udo:Meier:Dorfstr. 12:Reutlingen:2:10:56

 

        هنا لم نُدخلِ المجالَ ، ولذلك صُنف الملف بإعتبار الحرف الأول من السجل .

 

$ sort -t: +3 -4  adr

Anneliese:Zimmermann:Bachstr. 24:Berlin:13:4:34

Otto:Schneider:Taubenweg 2:Berlin:10:5:47

David:Goldstein:Florastr. 7:Essen:8:11:38

....

Jens:Hofmeister:Am Markt 43:Zittau:19:2:73

Kristina:Weber:Altenberger Chaussee 2:Zittau:9:8:71

 

        هنا أخبرنا sort أن المجالاتِ منفصلةٌ بواسطة النقاط (:) وأنَّ التصنيف يجب أن يبدأ في

المجال الرابع (3+) (أي المدينة) ،   وينتهي به (لغاية 4-)، واسمُ الملف  adr.

 

$ sort -t: +3 -4  +1 -2  adr

Otto:Schneider:Taubenweg 2:Berlin:10:5:47

Anneliese:Zimmermann:Bachstr. 24:Berlin:13:4:34

David:Goldstein:Florastr. 7:Essen:8:11:38

......

Jens:Hofmeister:Am Markt 43:Zittau:19:2:73

Kristina:Weber:Altenberger Chaussee 2:Zittau:9:8:71

        هنا يكون الأسلوب كالتصنيف السابق ، ولكن هنا أعْـلمْنا  sort  أنه في حال تعدد اسم

التصنيف ( المدينة ) فيجب متابعة التصنيف في مجال ثانٍ (1+) ¡ وهو الاسم الثاني للشخص (

العائلة) .

 

$ sort -t: +4  -5  adr

Susanne:Krieger:Fischerweg 8:Jena:1:5:67

....

David:Goldstein:Florastr. 7:Essen:8:11:38

Kristina:Weber:Altenberger Chaussee 2:Zittau:9:8:71

        طلبنا ترتيب يوم الميلاد دون الإضافة -n .

 

$ sort -t: -n +4  -5  adr

Susanne:Krieger:Fischerweg 8:Jena:1:5:67

Udo:Meier:Dorfstr. 12:Reutlingen:2:10:56

....

Anneliese:Zimmermann:Bachstr. 24:Berlin:13:4:34

Jens:Hofmeister:Am Markt 43:Zittau:19:2:73

Hannelore:Becker:Bismarckstr. 173:Hamburg:21:9:50

Michael:Kolbe:Uferstr. 24:Rostock:23:11:70

 

 نرى - هنا - أننا لم نستعمل في الحالة الأولى-n  لترتيب الأرقام ،  بل استعملناها في

المثال الثاني لترتيب أيام الميلاد للاشخاص ، دون الأشهر والسنين.

stty

 

إدخال المواصفات للمطاريف:

 

        ويتم ذلك بواسطة البرنامج stty الذي من خلاله نستطيع تغيير المواصفات للمطراف

ولوحات مفاتيح الأحرف.

 

لإظهار المواصفات الحالية لمطرافنا نستعمل الأمر هكذا:

$ stty

speed  19200  baud; evenp

erase = ^H

-inpck  imaxbel  -taps

iexten  crt

 

        أو هكذا بالتفصيل:

$ stty -a

speed  19200  baud¡ 0 rows¡ 0 columns

parenb  -parodd  cs7  -cstopb  -hupc1  -cread  -cllocal  -crtscts

-ignbrk  brkint  ignpar  -parmrk  -inpck  -istrip  -inlcr  -igncr  icrnl  -iuclc

ixon  -ixany  -ixoff  imaxbel

isig  iexten  icanon  -xcase  echo  echoe echok  -echonl  -nofilsh  -tostop

echoctl  -echoprt  echoke

opost  -olcuc  onlcr  -ocrnl  -onocr  -onlret  -oofill  -ofdel  -taps

erase  kill  werase  rprnt  flush  lnext  susp  intr  quit  stop  eof

^H    ^U    ^W    ^R    ^O    ^V    ^Z/^Y ^C    ^\     ^S     ^Q   

^D

شكل هذا الإظهار غيرُ مرتب لكنه سهل الفهم . وإليك استعمال الحالات في الأعلى موضحةً بالتدريج:

 

        فتح وإغلاق هذه الحالات تُنجز بواسطة البرنامج stty  ¡ بالإضافة إلى إشارة الطرح (

إغلاق) ، أو دون إشارة الطرح (فتح):

 

$ stty ignbrk         ignor Break  (لا توقف عمل البرامج)

$ stty -ignbrk                إلغاء الحالة

 

فهرس المواصفات:

 

تعتبر الإشارة [-] حالة نفي للمقاييس ، كما هو مبين في الجدول التالي:

[-]parenb    parity Bit  فحص إشارة الاختبار

[-]parodd    يكون زوجياً أو فردياًparity Bit 

cs5 cs6

cs7 cs8        النقلByte  في 5،6،7،8¡ Bit ال عدد50 إلى

19200       النقل  في Bit`s ال عدد

[-]hupcl      فصل الخط بعد الخروج

[-]cstopb       علامات الانفصال( -cstopb واحد Bit¡   cstopb 2 Bit)

[-]ignbrk     Ctrl -C العمل ب

[-]istrip      الثامن أثناء الإدخال(مراعاة أم لا Bit ال

[-]inlcr       Carriage Return إلى Linefeed (LF)  تحويل

[-]igncr      Carriage Return مراعاة

[-]icrnl       Linefeed  إلى Carriage Return  تحويل

[-]iuclc       تحويل الأحرف الصغيرة إلى كبيرة أثناء الإدخال

[-]ixon       السماح بإيقاف إخراج المعلومات

[-]ixany      متابعة إخراج المعلومات بضغط أحد المفاتيح

[-]opost      السماح بالتصفية أثناء الإخراج

[-]olcuc      تحويل الأحرف الصغيرة إلى كبيرة أثناءالإخراج

[-]onlcr      أثناء الإخراج Carriage Return+LF إلى Linefeed  تحويل

[-]ocrnl      أثناء الإخراجLinefeed  إلى Carriage Return  تحويل

[-]icanon     مراعاة رموز القيادة بأحرف عادية

[-]cbreak    مراعاة رموز القيادة بأحرف

[-]echo       إظهار ضغط مفاتيح الإدخال على الشاشة

erase c          وضع رمز الحذف

kill    c       وضع رمز الإيقاف

eof    c       وضع رمز نهاية الملف

eol     c       وضع رمز نهاية السطر

start   c       وضع رمز متابعةإخراج المعلومات بضغط  المفتاح

stop   c       وضع رمز إيقاف إخراج المعلومات

susp   c       إيقاف البرنامج لمتابعته لاحقاً

rows   n       عدد السطور في الشاشة

cols    n       عدد الخانات في الشاشة

cooked        مراعاة الرموز

raw            لا مراعاة ولا تغيير للإدخال

sane           وضع التغييرات العادية تلقائياً أو أوتوماتيكياً

tail / head

 

إظهار بداية ونهاية الملف :

 

        مما نود ذكره أن برنامج  head  يُستخدم لإظهار أول الملف، والبرنامج  tail لإظهار

آخر الملف. والبرنامج head يمكن الاستغناء عنه ، لأن البرنامجين more و sed  يقومان بعمله..

انظر المثال التالي:

 

$ head -20 file

أو

$ sed 20q file

 

        وسنشرح مزيداً عن الأمر sed فيما بعد.

 

        أما البرنامج  tail  ¡ فيُظهر آخر المعلومات من الملف المطلوب، ونستطيع استعمال  -

و +  مع عدد الأسطر للانتقال إلى الأمام والخلف، بهدف إظهار محتوى الملف. وبالإمكان أيضاً

استعمال عدد السطور أو الأحرف لدى إدخال الأوامر كما هو في المثال التالي:

 

$ tail -20 file                 يظهر آخر 20 سطراً من الملف

$ tail -300c file              يظهر آخر 300 حرف من الملف

$ tail +200 file               يظهر الملف بعد السطر 200

 

        الإضافة f   تُظهر لك آخر الملف ،وحرف c  يعني  (character):

 

$ tail -80cf file

 

        والمثال الأعلى يُظهر آخر 80 حرفاً من الملف ، وينتظر تضخم الملف لإظهار الأحرف

المضافة إليه تلقائياً على الشاشة، وذلك  أثناء العمل في هذا الملف من قبل شخص آخر، وهذا

مهم لمراقبة العمل الخلفي للنظام (انظر المعالجة الخلفية للعمليات في هذا الكتاب). ملاحظة:

ربما لا تجد البرنامجين  tail و head  في نظامك.

talk           /       phone

المراسلة بواسطة الحاسوب:

 

        والبرنامجان phone و  talk يُستخدمان أيضاً للاتصال المباشر ، ولديهما ميزات أكثر .

ومن ميزات البرنامج  talkأنه يقسم الشاشة إلى قسمين: قسم إرسال وقسم استقبال ، ويرى

المستقبِلُ المعلومات القادمة حرفاً حرفاً . ويُستَعمَل هذان البرنامجان للاتصال عبر الشبكات

الخارجية ،  وسنذكر مزيداً عن الشبكات لاحقاً .

 

$ talk max

        في هذه الحالة تنقسم الشاشة إلى نصفين ، ويخبرنا النظام بأنه ينتظر الطرف الآخر (

الذي نريد التكلم معه ) مثلاً max ¡ ¡ ويظهرعلى شاشتنا   [waiting for your party respond

 . وكذلك الحال من خلال البرنامج  talk  أيضاً . وعلى شاشة max يظهر مايلي :

 

Message from Talk-Daemon@jordsys at 10:15

talk: connection requested by ziad@jordsys      

talk: respond with: talk ziad@jordsys

 

        ويجب على  max الآن أن يعمل بواسطة البرنامج talk لتنقسم شاشته إلى قسمين أيضاً .

في القسم الأعلى نكتب مانريد إرساله ،  وفي ذات اللحظة يُكتب ذلك في شاشة الآخر في القسم

الأسفل . ولدى الاتصال الأول بين الطرفين يظهر في أعلى الشاشة[connection established ]  ،

أي أن الاتصال قد تم . وبعد انتهاء العمل يستطيع أحد الاثنين أن ينهيَ العمل بواسطة Ctrl-C

اوDel  .

 

        انقسام الشاشة :

_

tar

 

ملفات الأرشيف:

 

        بواسطة البرنامج  tar يمكن عمل ملف واحد لاحتواء عدد من الملفات وضمها إليه ،

استعداداً للتخزين المُكَثَّف . ويُحَـبَّـذ استعمال هذا البرنامج لدى إرسال المعلومات والبيانات

عبر الشبكة العالمية ، والتكثيف يقلل تكلفة هذه المهمة . وبدل إرسال 100 ملف ، توضع هذه

الملفات في ملف واحد (أرشيف) ، وبعد ذلك تُكثف بواسطة البرنامج compress الذي يقلل حجم

الملف .

 

        وهنا نشرح كيفية عمل الأرشيف أولاً:

 

$ tar cvf script.tar script    دليل ما script هنا

a script/sendx 1 blocks

a script/sonds 1 blocks

a script/vws     2 blocks

a script/ast      1 blocks

 

        قام tar بتخزين جميع الملفات الموجودة في الدليل script في ملف واحد

أسميناهscript.tar  .

        إضافات tar :

 

 = c creat    أنشىء ملفاً جديداً

 = r   write          اكتب في ملف موجود (إضافة)

= v  verbose أفصح عمّا فعلته ، وبدون v لاتظهر                                 

الملفات المؤرشفة.

 = f   file            أرسلْ كل الملفات إلى filename (ودونها                             

يرسل tar الأرشيف إلى وحدة أشرطة                                        التخزين)

 = x           إعادة الملفات إلى حالتها الأصلية من ملف                            الأرشيف

 = t                   إظهار مابداخل ملف الأرشيف من ملفات.

 

        وهنا بعض الأمثلة :

 

$ tar rvf script.tar udat

a udat 3 blocks

 

        أضفنا الملف udar إلى ملف الأرشيف script.tar بواسطة r .

 

$ tar xvf script.tar

x script/sendx¡ 38 Bytes¡ 1 tape blocks

x script/send2¡ 49 Bytes¡ 1 tape blocks

x script/rws¡      541 Bytes¡ 2 tape blocks

x script/ast¡      28   Bytes¡ 1 tape blocks

x udat¡ 1038 Bytes¡ 3 tape blocks

 

        وهنا حَوّلنا الأرشيف  script.tar  إلى ملفات ، وأعدناها إلى وضعها الأصلي بواسطة x .

 

$ tar  tvf  script.tar

rwxr-x---  13014/100   39    0      Aug   24   22.22  1993 script/

rwxr-x---  13014/100   39    38     Aug   24   21.14  1993 script/sendx

rwxr-x---  13014/13     46            Aug   24   12.15  1993 script/sendz

rwxr-x---  13014/13    54             Aug   24   23.12  1993 script/rws

rwxr-x--x 13014/13      28    Aug   24   12.18  1993 script/ast

rw-rw----  13014/13   1038    Aug   24   20.13  1993 udat

الشكل 52

 

        وهنا تظهر الملفات المخزنة في ملف الأرشيف من اليسار إلى اليمين : الحقوق و UID  ¡

وعدد ال Bytes ¡ والشهر ، واليوم ، والساعة ، والعام ، والاسم مع الدليل .

touch

 

تغيير تاريخ الملكية:

 

        بواسطة البرنامج touch  يمكننا تغيير تاريخ آخر استعمال حصل لملف معين ، وذلك حسب

الشكل التالي :

 

$ touch personal

$ ls -al personal

-rwxr-x---1 mazen support 35750 15 sep 10.15 personal

$_

الشكل 11

 

        والتاريخ المقصود هو تاريخ النظام الحالي ووقته، ولكن يمكننا إدخال الوقت

والتاريخ كما نريد باتباع النمط التالي : سنة، دقيقة، ساعة، يوم، شهر:

 

$ touch 08100815 personal

$ ls -al personal

-rwxr-x---  1 mazen support 35750 10  Aug 8.15 personal

$_

 

        ويمكن استعمال touch لعمل ملف جديد ، وذلك بإدخال touch هكذا:

 

$ touch samir

tr

 

تبديل الأحرف داخل الملف:

 

        في حال الرغبة بتبديل أحد الأحرف من محتوى أحد الملفات نستعمل البرنامج  tr  الذي

يقوم  بهذه المهمة.

 

        وهنا نُغير الفاصلة (:) إلى الفاصلة (.) في الملف adr  بواسطة رمز الإدخال >:

 

$ tr   : .  < adr

Susanne.Krieger.Fischerweg 8.Jena.1.5.67

Udo.Meier.Dorfstr. 12.Reutlingen.2.10.56

....

Anneliese.Zimmermann.Bachstr. 24.Berlin.13.4.34

Thomas.Meier.Forstweg 1.Stuttgart.7.10.81

 

        ولم نُرسل التغيير إلى ملف آخر ، وقد ظهر فقط على الشاشة ، وبقي محتوى الملف  adr 

كما كان ولم يتغير . وفي حال تغيير رموز مثل * أو ; فيجب وضعها مابين فواصل مرفوعة هكذا:

‘*‘ أو "*" ، وفي حال وضعها دون فواصل حماية فإنَّ النظام يفهمها خطأ .  هذا ويمكن حمايتها

بواسطة \ أيضاً.

 

        ونستطيع تغييرَ عدة أحرف بأخرى أو تغييرَ جميع الحروف الصغيرة بحروف كبيرة ...إلخ ،

باستعمال التحديد (a-z) أو (A-Z) . ومن الممكن تغيير حروف معينة باعادة التكرار .

 

مثال : إذا أردنا أن نُغيرَ حرف a  4 مرات ندخلها هكذا (a*4) . ويجب هنا الانتباه إلى أن

system V ، و BSD ، والأنظمةَ الأُخرى تختلف في طريقة الإدخال syntax ، ولذلك يجب الرجوع إلى

ال manual  لمعرفة الصحيح.

 

        وإليك بيانَ الاختلاف في إدخال الأمر tr في  system V و BSD  :

 

        system V:

$ tr   '[A-Z]'  '[a-z]'  < adr

susanne:krieger:fischerweg 8:jena:1:5:67

udo:meier:dorfstr: 12:reutlingen:2:10:56

....

thomas:meier:forstweg 1:stuttgart:7:10:81

 

        ونستطيع إدخال الأمر tr هكذا في   BSD-Unix:

$ tr   A-Z    a-z     <adr

        ونحصل على ذات المحتوى أو الإظهار كما في الشكل 49.

 

        وهنا نغير جميع الأرقام ونضع (?) بدلاً منها (system V) :

$ tr   '[0-9]'  '[?*]'  < adr

Susanne:Krieger:Fischerweg ?:Jena:?:?:??

Udo:Meier:Dorfstr. ??:Reutlingen:?:??:??

....

Anneliese:Zimmermann:Bachstr. ??:Berlin:??:?:??

Thomas:Meier:Forstweg ?:Stuttgart:?:??:??

 

        BSD:

$ tr   0-9   '?'     <adr

 

        ونستطيع حذف أحد الأحرف أو الرموز (مثل :) من الملف بواسطة الإضافة -d:

$ tr  -d  :  < adr

SusanneKriegerFischerweg 8Jena1567

UdoMeierDorfstr 12Reutlingen21056

OttoSchneiderTaubenweg 2Berlin10547

KristinaWeberAltenberger Chaussee 2Zittau9871

MichaelKolbeUferstr 24Rostock231170

DavidGoldsteinFlorastr 7Essen81138

HanneloreBeckerBismarckstr 173Hamburg21950

JensHofmeisterAm Markt 43Zittau19273

AnnelieseZimmermannBachstr 24Berlin13434

ThomasMeierForstweg 1Stuttgart71081

uuencode / uudecode

 

تحليل الملفات البينرية ( البرامج المجمعة ):

 

        وهنا طريقة لإرسال الملفات البينرية ( البرامج المجمَّعة ) بأن نحولَها أولاً إلى أحرف

بواسطة أحد برامج التحليل ، ونرسلَها بواسطة الأنبوب (|) إلى البرنامج   mail .

 

        لنفترض أنَّ لدينا ملفاً بينرياً يسمى  data  ¡  ونريد إرساله إلى المستخدِم max :

 

$ uuencode data data.code|mail max

 

        والملف data يرسَـلُ مع التحليل في الملف data.code  ¡ ويحصل  max  على الملف مع

معلومات إضافية في أول وآخر الملف .

 

        ويجب على max  أن يعيد الملف إلى حالته الطبيعية بواسطة  uudecode ¡ بعد إزالة

المعلومات المتعلقة بالبريد الإلكتروني:

 

$ uudecode data data.code

 

$ uuencode data data.code هكذا نُظهر المحتوى

vi

 

محرر النصوص vi :

 

        قبل البدء بالعمل بواسطة vi يجب التأكد من صلاحية عمل المطراف بالنسبة  للبرنامج ،

وذلك بالتأكد من وجود البديلة TERM في شكلها الصحيح (أنظر جزء المطراف) قبل البداية

بالعمل:

 

        قبل البدء بالعمل يجب التأكد من قابلية عمل المطراف مع vi ¡ وذلك بالتأكد من وجود

البديلة TERM في شكلها الصحيح (أنظر جزء المطراف) قبل البداية بالعمل:

 

        نستطيع العمل المباشر بإدخال الأمر vi ملحقاً باسم الملف الذي نريد كتابته ، أو

الملفِ المراد تغييره.

 

$ vi filename

 

 

vi filename           يفتح filename عند النهاية أو يعمل ملفاً جديداً

vi /text filename      يفتح filename عند السطرحيث توجد (كلمة) text

vi n filename  يفتح filename عند رقم السطر كذا (n)

 

        وإذا كان الملف موجوداً فيظهر vi هكذا :

 

_

        وتظهر هنا السطور غيرُ المكتوبة مسبوقةً بعلامة ~ للإشارة إلى  أنها غير مستخدَمة. وفي

أسفل الشاشة يظهر اسم الملف. وفي حالة عدم وجود الملف ، يعمل vi ملفاً جديداً وتظهر العبارة

[New file]

        برنامج vi لديه حالتان للعمل: حالة إدخال الأوامر ، وحالة إدخال المعلومات ،  وهذه

الأخيرة هي الحالة التي نحصل عليها بعد ظهور شاشة البرنامج vi مباشرة . وللخروج من حالة

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

من حالة إدخال الأوامر:

 

 

        طرق الخروج الدارجة من حالة إدخال الأوامر هي إدخال الأحرف a¡i¡o وحرفِ O الكبير.

 

 a =   append        إضافة

 i =    insert  إضافة للأحرف

 o =                  سطر جديد

 

        وعمل هذه الأحرف في البرنامج vi يكون كالتالي:

 

        إذا أردنا إدخال كلمة إلى الملف ونحن موجودون في حالة الأوامر ، فإننا نضغط

المفتاح a ونكتب ما نريد ، وبعد ذلك نعود إلى حالة الأوامر بالمفتاح Esc.

 

        ولتوجيه الوامض نستعمل مفاتيح الأسهم المتجهة إلى الأعلى والأسفل ، وإلى اليسار

واليمين (_SYMBOL 174 \f "Symbol"_ _SYMBOL 175 \f "Symbol"_ _SYMBOL 173 \f "Symbol"_

_SYMBOL 172 \f "Symbol"_ ) . وفي حالة عدم وجود هذه المفاتيح نستطيع استعمال الأحرف h

للاتجاه إلى اليسار ، و i  للاتجاه إلى اليمين ، و k  للأعلى ، و  j  إلى الأسفل .

 

        ولتغيير ماكتبناه على الشاشة نستعمل المفتاح BackSpace لحذف الأحرف من يسار الوامض

، ولحذف السطر Ctrl -U ، ولحذف الكلمة من اليسار Ctrl -W  ، ولقلب الصفحات إلى الأمام

نستعمل Ctrl -F ، وإلى الخلف Ctrl -B ، وللخروج من vi وتخزين الملف نُدخل ZZ . ومن

المستطاع استعمال :q! للخروج من البرنامج دون تخزين الملف بعد تغييره ، أو للخروج في حالة

عُدولنا عن تخزين الملف .

 

         أما الوظائف الأخرى فنقدم هنا لائحة بها ، وهي تُستَعمَل من خلال حالة الأوامر :

 

        التحرك في الملف:

b              ينقل الوامض إلى الخلف مقدراً كلمة واحدة

Ctrl-B يدرج إلى الخلف شاشة كاملة

Ctrl-D يدرج نزولا نصف شاشة

Ctrl-E يدرج الشاشة صعوداً سطرا واحدا

Ctrl-F يدرج إلى الأمام شاشة كاملة

Ctrl-L Ctrl-R ينشط الشاشة حاذفاً المحارف الخاطئة

Ctrl-U يدرج إلى الأعلى نصف شاشة

Ctrl-Y يدرج الشاشة نزولا سطرا واحداً

e              ينقل الوامض إلى نهاية الكلمة الحالية

h              ينقل الوامض إلى اليسار فسحة واحدة

H              ينقل الوامض إلى أعلى الشاشة(High)

j               ينقل الشاشة نزولاً سطراً واحداً

k              ينقل الوامض صعوداً سطراً واحداً

l               ينقل الوامض فسحة واحدة إلى اليمين

L              ينقل الوامض إلى أسفل الشاشة (low))

M             ينقل الوامض إلى وسط الشاشة((Middle)

n G            ينقل الوامض إلى السطر رقم n

w              ينقل الوامض إلى الأمام كلمة واحدة

0(صفر)       ينقل الوامض إلى بداية السطر

$              ينقل الوامض إلى نهاية السطر

"               ينقل الوامض إلى الوضعية السابقة

a              يلحق نصاً عند محرف واحد إلى يمين الوامض

A              يلحق نصاً عند نهاية السطر

cc             يتيح تغيير سطرٍ والمتابعةَ في نمط الإقحام

cw             يتيح تغيير كلمةٍ والمتابعةَ في نمط الإقحام

c(              يتيح تغيير بقية الجملة

c{             يتيح تغيير بقية الفقرة

i               يولج نصاً عند وضعية الوامض

I               يولج نصاً عند بداية السطر

o              يفتح سطراً لإقحام نص تحت الوامض

O              يفتح سطراً لإقحام نص فوق الوامض

r               يتيح استبدال أحد المحارف والعودةَ إلى نمط الهروب

add            يحذف السطر ويضعه في السلةa

"ap            يضع الأسطر المنزوعة أو المحذوفة والموجودة بالسلة  

                a بعد الوامض

"aP            يضع الأسطر المنزوعة أو المحذوفةَ والموجودة في السلةa قبل                    

الوامض

ayy            ينزع سطراً ويضعه في السلة a

dd             يحذف سطراً كاملاً

D              يحذف بقية السطر الحالي

dw             يحذف كلمة word = w

J              يصل ما بين سطرين قصيرين في سطر واحد طويل

ma            يعلم a للنزع أو الحذف

p              يضع النص المنزوع أو المحذوف بعد الوامض

P              يضع النص المنزوع أو المحذوف قبل الوامض

u              يبطل مفعول أمر لتغيير النص

U              يبطل مفعول جميع التغييرات على السطرالحالي

x              يحذف محرفاً

yw             ينزع كلمة (ينسخها إلى المخزن الانتقالي)

yy             ينزع سطراً

.(نقطة)        يكرر الأمر السابق

"lp             يسترجع الحذف السابق

 

        البحث عن النص :

 

text/                  يبحث باتجاه الأمام في الملف عن النص text

?text                  يبحث باتجاه الخلف في الملف عن النص text

n                      يتابع البحث في ذات الاتجاه

N                      يبحث في الاتجاه المعاكس

 

        ضبط القياسات بواسطة أوامر النقطتين التابعة إلى ex :

 

:set ai يؤدي إلى تفعيل الحذف التلقائي للفقرات (autoindent                                

يكرر الحذف)

:set all        يسرد جميع الإضافات التي تستطيع ضبطها

:set nu        يضبط الأرقام (أرقام الأسطر)

:set noic      يجعل عمليات البحث حساسة للتفريق بين الأحرف الكبيرة                    

والصغيرة

:set wm=n يضبط الهامش عند رقم n

 

        تخزين النص ، وتحريكه ، وحذفه بواسطة أوامرِ النقطتين المطابقةِ لأوامر البرنامج ex

:

 

:e filename           ينقح (edit) filename

:e                             ينقح الملف السابق

:n                             ينقل الوامض إلى رقم السطر رقم n

:x¡ y m z              ينقل الأسطر ما بين الرقم x والرقم y إلى الرقم z

:x¡ y co z              ينسخ الأسطر ما بين x و y إلى z

:x¡ y d                 يحذف الأسطر من x إلى y

:x¡ y w filename      يكتب الأسطر ما بين x و y في filename

:x¡ y w >> filename  يضيف الأسطر ما بين x و y بالملف filename

:g ?                          يجعل حالات التواجد نصاً جديداً newtext

q!:                            يَخرُجُ من vi ويلغي جميع التغييرات التي أُجريت

                               علىالملف دون تخزين

w:                             يخزن التغييراتِ الأخيرة

:% S/oldtext / newtext/g    يبحث عن النص القديم oldtext ويستبدل به

                                       نصاً جديداً     newtext

wc

 

تعداد الأسطر والكلمات والأحرف في الملف:

 

        البرنامج wc يقرأُ ويعمل بتعداد الأسطر والكلمات والأحرف الموجودة في الملف letter1

الداخل إليه بواسطة  <:

 

$ wc < letter1

    17     460    2085  

(الأسطر 17 والكلمات 460 والأحرف 2085 )

 

        ويمكن عمل الإدخال والإخراج في آن واحد:

 

$ wc <letter1 >ichraj        ichraj  وأرسل إلى letter1 اقرأ من

$ cat  ichraj

     17    460    2085

who

إظهار أسماء العاملين:

 

إذا أردنا معرفة أسماء العاملين على النظام في الوقت الحاضر، نُدخل الأمر  whoونضغطReturn 

.

$ who

Ziad          ttyp0          Feb          6    09:41

mazen      ttyp1          Feb          6    11:15

Ahmad     ttyp2          Feb          6     12:00

nabilah     ttyp3          Feb          6     13:01

root          console     Feb           6     10:10

        كما ترى أعلاه، يعمل هؤلاء المستخدِمون حالياً في النظام من اليسار إلى اليمين، وتظهر

جلياً الأسماء والمطاريف والتاريخ والوقت.

 

        والأمر who am  i يعطيك اسمَ الذي يعمل على هذا المطراف :

$ who am i

ziad          ttyp0         Feb      6      9:41

 

        ويستطيع مدير النظام (superuser) أن يستعمل سجل المجموعات لإعطاء الصلاحيات

والحقوق، أي أن يسجل الأشخاص في مجموعات مختلفة، لكي يعطيَ لكل مجموعة حقوقاً وصلاحيات خاصة

بها. فلو وجد على سبيل المثال ثلاثة عاملين في قسم المحاسبة ، فإنه يحق لهم استخدام

معلومات معينة، مثل معلومات الميزانية أو الأجور، ويمكن جمعهم في مجموعة واحدة لها حقوق

معينة.

write

 

 

الاتصال المباشر:

 

        بواسطة البرنامج write ¡ واسم المستخدِم المعني (شرط أن يكون مرتبطاً بالشبكة أو

النظام) ، نستطيع إرسال الأخبار إليه في حال تواجده بموقعه، أي أن يكون مطرافه عاملاً. ويَكتِبُ

البرنامج write  الأخبار على شاشة المُرسَـل إليه مباشرة دون العبث بموجوداتها ، ويستطيع

مستقبل الخبر  إعادة بناء شاشته باستعمال Ctrl -L بعد قراءة ما أُرسل إليه. وعندما ينتهي

المُرسِـل من الكتابة ينهي العملَ في البرنامج  write  بواسطة  Ctrl -D .

 

        وفي حال الإرسال والاستقبال للطرفين (أي أن يعمل اثنان بواسطة برنامجwrite ) ،

يستطيع هؤلاء المحادثة كأنما يتحدثون هاتفياً ولكن بالكتابة .

 

        في بعض الحالات يكون لدى أحد المستخدِمين مطراف متعدد النوافذ ، وهذه النوافذ

يُعطيها النظام أسماء مثل ttyp1 ...إلخ. وفي حال وجود عدة نوافذ في مطراف واحد يجب إعلام

write إلى أي مطراف ( نافذة) نريد إرسال الأخبار .

 

        وقبل البدء في المراسلات يجب التأكد - أولاً - من وجود المستخدِمين العاملين حالياً في

النظام :

 

$ who

ziad           ttyp0          May   7      09:40.

max           ttyp1          May   7      10:15

mazen         ttyp2          May   7      11:20

root                   console       Feb    7      08:14

الشكل 54

 

        هؤلاء المستخدِمون يعملون حالياً على الجهاز. وبعد التأكد نباشر الإرسال :

 

$ write  max

You are connected to "max at jordsys ttyp1".

Hay Max !

I need a cup of coffee.              هنا تكتب الخبر                    

Ziad.                                 من

Ctrl-D                                write نهاية البرنامج

 

        ونستعمل الأمر هكذا في حال تعدد النوافذ :

 

$ write max ttyp1

 

        ويُرسَـل الخبر للمستخدِم max إلى النافذة (المطراف)ttyp1   مباشرة.

 

        يفضل استعمال who قبل كل عملية إرسال مباشِرة ، للتأكد من وجود العاملين في

النظام. وإذا أراد أحد المستخدِمين الحيلولةَ دون "إزعاجه" ، فيستطيع أن يحجب ذلك بواسطة

الأمر mesg  n  ، ويعيد السماح بالوصول إليه بواسطة mesg  y   ، وذلك في حال حصول المستخدِم

على الصلاحية بأن يغير مواصفات مطرافه بواسطة mesg .

 

        ونستطيع رؤية صلاحية التغيير هكذا:

 

$ LS -al  /dev/ttyp1

crwx-w---- 1 max tty  20     6      May   7      13:05 /dev/ttyp1

 

         نرى هناأنَّ في المجموعة الثانية من الحقوق يوجد w ¡ وهذا يعني أن المطراف ليس

محجوباً. وفي حالة حجبه نجد (لا حقوق -) بدل (حقوق w) .

xargs

 

تركيب الأوامر:

 

لدى تشغيل عدة برامج في إيعاز واحد ، نستعمل البرنامج  xargs  للإخراج المشترك :

 

$ ls *.c | xargs echo Hier is all C-Programs:

Hier is all C-Programars: Prog1.C Prog2.C Prog.3C.......

 

        هنا يسرد البرنامج  LS  جميع الملفات التي تنتهي بحرف  .c   وبواسطة الأنبوب (|)

يُرسَـل الإخراج إلى xargs ¡الذي يقوم بدوره بتشغيل الأمر echo ¡ الذي يرسل العبارة  (Hier is

all Programs:) ¡ وبعد ذلك يخرج ماتوصل إليه البرنامج LS إلى الشاشة . وفي حالة أخرى يمكن

استعمال الإضافة  -n  لجعل xargs  يعيد الوظيفة حتى ينتهيَ الإنجاز .

 

وإليك مثالاً على ذلك:

 

$ ls *.dat | xargs -n1 cmp compare.dat

compare.dat a.dat differ: char 21¡line 3

compare.dat b.dat differ: char 32¡line 7

compare.dat c.dat differ: char 43¡line 12

 

         نرى هنا الملف compare.dat يُقارِن مع الملفات التي وجدها البرنامج  ls  . والإضافة

 -n1 تجعل البرنامج xargs   يفرض على البرنامج cmp أن يأخذ ملفاً واحداً ، ويقارنه ، ثم

يأخذَ التالي ...إلخ .  حتى تنتهيَ مقارنة جميع الملفات التي تنتهي أسماؤها ب (.dat) .

 

        وهاك مثالاً آخرَ للبرنامج xargs أكثر تعقيداً من المثال السابق:

 

$ ls *.c | cut -d. -f1 | xargs -ip mv p.c p.old

 

        وهنا يبحث البرنامج ( ls ) عن الملفات التي تنتهي بحرفc  (*.c) . والإضافةُ  -d 

تُستعمل للإفصاح عن نوعية فصل المجالات بعضها عن بعض بواسطة رمز ( هو في مثالنا هذا النقطة

في *.c) . وفي المثال في الأعلى لدينا مجالان : بديلة الاسم (*) وحرف (c) تفصلهما نقطة (*.c)

، ونختار المجال الأول (الاسم دونc  ممثلاً ب *) بواسطة الإضافة -f1 التابعة للأمر cut ، ليُخرِجَ

لنا اسم الملف فقط دون النقطة ودون حرف c . وبعد ذلك يَستَعمل xargs  الإضافة  -ip  لوضع اسم

الملف بها ، ويجعل mv يُغير الاسم الأول من الملفات التي تنتهي ب   .c إلى ذات الاسم + عبارة

(.old ) .

 

        ويمكن أن تُستَبدلَ هذه العملية باستعمال الأمر mv  مكرراً بعدد الملفات الموجودة على

هذا النمط وبتحويلها على النحو التالي:

 

$ mv  hollo.c hollo.old

$ mv  backup.c      backup.old

$ mv  display.c      display.old

 

        واستعمال البرنامج xargs يوفر علينا وقتاً طويلاً من العمل ، ويكون مساعداً في بعض

الأحيان.

الأوامر والبرامج التابعة للنظام UNIX System V

 

الأوامر

 

أوامر للإدخال والإخراج:

 

open   فتح ملف للإدخال والإخراج

close  إغلاق الملف

read           قراءة محتوى الملف

write          كتابة في الملف

lseek  تحرك الموجه في الملف

ioctl           عملية توجيه الأجهزة

fcntl           عملية توجيه الملف

fstat           معلومات وضع وحالة الملف

dup            إزدواج وصف الكلمة الترتيبية للملف

chdir  تغيير دليل العمل

chroot تغيير دليل العمل (الجذر) الرئيسي

 

أوامر لعمل الملف وحمايته:

 

creat          عمل ملف جديد

mknod عمل أرشيف او ملف خاص

link            عمل ربط جديد

unlink حذف الربط

access جلب صلاحية فتح الملف

chmod تغيير صلاحية وحقوق فتح الملف

chown تغيير مالك الملف

utime  تغيير وقت العمل بالملف

stat            جلب حالة ووضع الملف

umask جلب منيو العمل بالملف

mount عمل نظام ملفات جديد

umount        حذف نظام الملفات

ustat          جلب الإحصاء الخاص  بنظام الملفات

 

أوامر إدارة العمليات:

 

exec           تشغييل برنامج جديد

pause أوقف عمل برنامج وانتظر الإشارة

alarm  وضع وقت الإنذار

exit            إنهاء عمل برنامج

fork           تشغيل عملية ابن

wait           انتظر نهاية عمل عملية الأبن

kill            احذف او انهي عمل عملية ما

signal جواب على احدى الاشارات

nice           تغيير حالة عمل العمليه

getpid جلب رقم العملية

getppid        جلب رقم العملية الأم

setpgrp       وضع رقم مجموعة العملية

getpgrp       جلب رقم مجموعة العملية

setuid وضع رقم مستَخدِم العملية

getuid جلب رقم مستَخدِم العملية

setgid وضع رقم مجموعة مستَخدِمين العملية

getgid جلب رقم مجموعة مستَخدِمين العملية

geteuid        جلب الرقم الأصلي لمستَخدِم العملية

getegid        جلب الرقم الأصلي لمجموعة مستَخدِمين العملية

times  جلب وقت تشغيل العملية

ulimit  وضع وجلب حدود عمل العملية

brk            تعليمات استعمال وحدة الذاكرة الاضافية

plock  وضع عملية ما في وحدة الذاكرة

pipe           عمل اُنبوب

msgget        فتح مجال إخباري

msgop إرسال وإستقبال من مجال إخباري

msgctl تحويل مجال إخباري

semget        Semaphores فتح مجموعة إشارات

semop semaphores تشغيل عملية من خلال

semctl semaphores إدارة

maus  إستعمال الذاكرة المشتركة

shmget        فتح الذاكرة المشتركة للإستعمال

shmop شبك الذاكرة المشتركة

shmctl إدارة الذاكرة المشتركة

 

أوامر اخرى:

 

acct           تشغييل واقاف حساب التشغييل

profil  profileتشغييل واقاف عمل ال

ptarce عمل متابعة احد عمليات الأبناء

stime  وضع وقت وتاريخ النظام

time           جلب الوقت

sync           حذف مجال الملفات من النواه

uname جلب اسم النظام العامل

 

 

البرامج المساعدة

 

 

acctcom       يبحث عن ويظهر ملفات محاسبة عمل النظام

adb            مساعدة تجارب

admin SCCS إدارة وعمل ملفات

ar             يحتفظ باراشيف قابلة للنقل

as             أسمبلي

asa            ASA يحلل رمز الميزان

awk           يمكن استعماله لبرمجة بسيطة

banner        يعمل رمز او إشارة عنوان

basenameيظهر اسم ملف الممر

bc             آلة حاسبة

bdiff           يقارن ملفان كبيران

bfs            يبحث في ملفات كبيرة الحجم

bs             مترجم برامج

cal             روزنامة / تقويم

calendar      روزنامة تنظيمية

cancel حذف عملية طباعة وسيطة

cat            إظهار محتوى الملف

cb             توضيب برامج سي

cc             مترجم برامج سي

cd             تغيير دليل العمل

cdc            SCCS-Delta-Operationتغيير معلومات ال

cflow  يرسم مخطط مجرى المعلومات

chgrp  يغير المجموعة المالكة للملف

chmod يغير حقوق استعمال الملف

chown يغير اسم مالك الملف

cmp           يقارن ملفان

col             يصفي بالعكس إنفصال السطور في الملف

comb  SCCS-Deltaيوحد

comm يختار او يتجاهل سطور تأتي في ملفان معنيان

convert       يوحد مواصفات ملفات أرشيفية وبرمجية

cp             ينسخ ملفات

cpio           ينسخ ملفات أرشيف

cpp            تأويل برامج سي

crypt  تشفير وحل تشفير الملفات

csplit  يقتطع أجزاء ملف حسب المواصفات المسجلة

ct              في مطراف بعيد getty يعمل عملية

cu             يطلب العمل في نظام يونيكس آخر

cut            يظهر معلومات الملف مقتطعة

cw             يعمل النص في ملف ما موازي الطول

cxref  يعمل قائمة علاقات لبرامج سي

date           التاريخ

dc             آلة حاسبة

dd             محول ملفات

delta          SCCS يعمل تغييرات في ملفات

deroff يحذف المواصفات الترتيبية من ملف ما

diff            يقارن ملفان بدقة

diff3           يقارن 3 ملفات

diffmk يسجل الاختلاف في ملفان

dircmp يقارن أدلة

dirname       يظهر أدلة الطريق

disable        يوقف إخراج الطباعة الوسيطة

du             وصف إستعمال أُسطوانة التخزين

dump  إظهار محتوى ملف مترجم من الذاكرة

echo           إظهار نص معيين

ed             محرر نصوص سطري

efl             مترجم فورتران

enable يعيد عمل إخراج الطباعة الوسيطة

env            يسجل شروط عمل الأوامر

eqn            يضع مواصفات العمليات الحسابية في الرياضيات

expr           يحسب قيمة المعلومات

f77            مترجم فورتران 77

factor تجزئة اجزاء عدد ما

false          يسجل القيمة " غلط "

file            إظهار نوعية الملف

find            يبحث عن وفي ملفات

fsplit  يجزئ برامج فورتران

gath           RJE يجمع ملفات للإستعمال ال

ged            راسم

get            SCCS يجلب رقم نسخة ملف ال

getopt يتفحص إحتمالات الأوامر

graph  يعمل رسم

graphics      يدخل أوامر ترقيمية وراسمة

grep           البحث عن المعلومات المطلوبة داخل الملفات

qutil           برامج مساعدة لعمل الرسوم

help           المساعد

hyphen        البحث عن الكلمات المتباعدة

id              يظهر اسم المستخدِم والمجموعة

ipcrm  يعيد مجموعة الإشارات والذاكرة المقتطعة

ipcs           يظهر حالة علاقة العمليات الخلفية

join            يجمع مابين ملفان بيانات

kill            يوقف عمل العمليات

ld              برنامج تجميع

lex            يعمل حالة التوضيب المعجمي

line            ينقل سطر الإدخال الى الإخراج

lint            يتفحص الإدخال النحوي للغة سي

ln              يربط ملفات

login   يُدخِل المصرح لهم الى النظام

logname      يظهر اسم الداخل الى النظام

lorder يجد العلاقة الترتيبية في مكتبة الأوامر النظامية

lp              برنامج الطباعة الوسيطة

lpr             برنامج الطباعة الوسيطة

lpstat  يظهر المعلومات الخاصة بالطباعة الوسيطة

ls              يسرد محتويات الأدلة

m4            macro-proccessor وحدة

mail           البريد الإلكتروني

make  يعيد توحيد البرامج

makekey     يعمل مفتاح للترميز

man           المرجع المساعد

mesg  يحجب ويسمح بارسال الأخبار

mkdir يعمل دليل

mm            يوضب نصوص

mmt           يوضب نصوص

mv            ينقل ملفات

newform      يعيد توضيب محتوى ملف نصوص

newgrp        يغيير وضع الإنتساب الى مجموعة

news  يظهر أخبار نظام الإعلام

nice           يغير المرتبة التي يعمل بها برنامج ما

nl              يرقم السطور في الملف

nm            يظهر اسم ملف الايعازات المشترك

nohup يجعل احد البرنامج يعمل دون مراقبة النظام

nroff          توضيب النصوص

od             برنامج الإظهار البينري

pack          يكثف الملفات

passwd        يعمل على تغيير كلمة المرور

paste  يجمع سطور الملف

pcat           يجمع ملفات مكثفة

pcc            مترجم لغة سي خفيف

pr             يطبع ملفات

prof           يظهر مواصفات

prs            SCCSيطبع ملفات

ps             يظهر حالة العملية الباطنية

ptx            يستعمل للفهرسة

pwd           يظهر دليل العمل

ratfor  مترجم فورتران إضافي

regcmp        مترجم ايعازات عادية

rjestat RJEيظهر حالة ال

rm             يحذف ملفات

rmdel  SCCS-Deltaيحذف

rmdir  يحذف دليل

rsh            غلاف مصغر

sact           SCCS يظر أعمال التحرير ل

sadp           يظهر حالة قراءة موجودات أُسطوانة التخزين

sag            يظهر مخطط عمل النظام

sar            يظهر لائحة عمل النظام

scat           يوحد ملفات ويظهرها

sccsdiff       SCCSيقارن اعمار ملفان

sdb            symbolicمساعد

sdiff           يقارن ملفات

se             محرر مطراف

sed            محرر

send           للعمل RJEيرسل وظائف

sh             غلاف بوني

size            يظهر حجم ملفات الايعازات

sleep  برنامج يعمل بوقت معين

sno            snobolمحول/مترجم

sort           يرتب محتوى الملف

spell           يجد أغلاط نحوية في ملف ما

spline يسهمد ويرتب منعطفات رسومية

split           يجزئ ملفات

stat            إحصائات شبكية لأعمال الرسوم

strip           يحذف الرموز من ملفات الايعازات

stty            يغيير حالة عمل المطراف

su             يغير مؤقتاً حالة معرفة المستخدِم

sum           يجمع عدد الرزم في ملف ما

sync           يسجل جزء وحدة التخزين المتواجد في الذاكرة في وحدة التخزين

taps           وضع نقاط الفراغ الموسع على شاشة المطراف

tail            يظهر آخر الملف

tar             برنلمج الأرشيف

tbl             توضيب اللائحات

tee            تهذيب الأنابيب

test            يظهر الشروط

time           يظهر وقت عمل برنامج ما

timex  يظهر معلومات ووقت عمل برنامج ما

toc            يعمل بيان رسومي

touch  تغيير تاريخ آخر استعمال حصل لملف معين

tplot           مصفاة رسوم

tr              تبديل أحد الأحرف من محتوى أحد الملفات

troff           يوضب نصوص

true           يدخل حالة " صح "

tsort           للترتيب الهندسي

tty             يهر اسم المطراف

umask جلب منيو العمل بالملف

uname إظهار اسم نظام يونيكس العامل

unget  SCCSيعيد ملف

uniq           يعيد ملف ذو سطور موحدة

units          يغير حالة جهاز ما

unpack        يحل التكثيف

uucp   يرسل ملفات من نظام الى نظام عبر الشبكة

uulog  uucpيعطي معلومات الدخول ل

uuname       uucpيعطي اسم الدخول

uupick للعمل بها uucpيجد ملفات

uustat uucp يظهر معلومات النقل بواسطة

uuto           ينسخ ملفات بين أنظمة يونيكس عبر الشبكة

uux            يقوم بإدخال أمر ما الي نظام يونيكس بعيد

val            SCCSيوافق على صلاحية ملفات

vc             مراقبة عمر النظام بواسطة رقمه

wait           إنتظار نهاية عمل عملية خلفية

wc             يظهر عدد الأسطر والكلمات والأحرف من محتوى ملف معين

what           SCCSيجد ملفات

who           يظهر معلومات تخص المستخدِم

write          يرسل أخبار الى مستخدِم آخر

xargs  إخراج مُشتَـرك لدى تشغيل عدة برامج في إيعاز واحد

yacc           عدة لمترجم برامج

 

Hosted by www.Geocities.ws

1