728x90 شفرة ادسنس

  • اخر الاخبار

    22‏/9‏/2014

    اساسيات مهمة في سطر الأوامر بنظام لينكس



    في الدرس الماضي تعرفنا على مقدمة بسيطة لطرفية او سطر الأوامر terminal في نظام لينكس بكل توزيعاته ، في هذا الدرس انشاء الله سنتعرف على اساسيات مهمة في كيفية استخدام سطر الأوامر في نظام لينكس.
    يوجد بعض الأنواع من الطرفية أو الشل أو سطر الأوامر مسميات لمعنى واحد الواجهة التى تقوم أنت بكتابة ما يحلو لك من اوامر فيها مثل طرفية csh , tcsh , zsh ولكن الطرفية التى سوف نعمل عليها من خلال الشرح بإذن الله هى طرفية bash والتى ترمز إلى Bourne again shell وسوف نتناول شرح مفصل وبالتدريج لأوامر كثيرة ومفيدة بإذن الله .

    •  أساسيات لابد من الإلمام بها:

    فى هذا الموضوع إن شاء الله سوف نقوم باستعراض بعض الأساسيات المهمة والتى ينبغى لمستخدم نظام لينكس اليومى معرفتها والإلمام بها ونقسمها فى عناصر تالية :
    1.      كل شىء فى عالم لينكس يعتبر ملف ( ﻻ تقلق سوف أقوم بشرح كل عنصر على حده ) 
    2.      أقصى طول لأسماء الملفات على نظام لينكس
    3.      الأسماء على لينكس حساسة تجاه الحروف الكبيرة والصغيرة 
    4.      بعض العلامات الخاصة تتجنب كتابتها فى أسماء الملفات
    5.       WildCardsوما ظيفتها ؟

    طبعا من القراءة الأولية للعناصر ﻻ يستطيع الفرد العادى من معرفة المراد منها ولذلك نبدأ أوﻻ مع أول عنصر:

    1.      كل شىء فى عالم لينكس ملف
    فى هذا البند غموض ما بمعنى البعض يتعامل بشكل يومى مع أنظمة التشغيل المختلفة سواء كانت أنظمة لينكس أو ماك أو حتى ويندوز وﻻ يعلم غير شىء وحيد وهو أن ما يسمى ملف هى الملفات التى يمكن تحريرها سواء كانت بالكتابة ، آخرون قد يعلمون أن الصوتيات والفيديوهات تعتبر ملفات ، آخرون يعلمون أن الصور ملفات وهكذا .... وهذا صحيح ولكن ما أود أن أصل إليه أنهم يعتقدون أن هذه هى الملفات فقط وﻻ شىء سواها على سبيل المثال القرص الصلب من معناه الظاهرى كتلة من تركيبة معادن ﻻ يمكن التعامل معها إﻻ من خلال أسلاك الData وال power وﻻ يمكن التغيير فى بيانات الهارد من خلال استخدام نظام التشغيل
    جاء نظام لينكس ليغير كل هذه المفاهيم ويعتبر أى شىء يخص الحاسب ملف سواء كان قرص صلب ، كروت الشبكات ، كروت الشاشة أي عتاد بجانب البرامج يعتبر ملف أيضا .

    البعض قد يسغرب ذلك ولكن كيف لنظام لينكس أن يقوم بذلك ؟ 
    الإجابة على هذا السؤال بسيطة جدا وهى أن أي شىء يقوم به نظام لينكس بالتعامل معه يعتبره مجرد سيل من ال bits وال bytes وﻻ شىء سوى ذلك ،ولكن على النقيض البرامج هى التى تتولى معرفة الأشياء مثلا محررات النصوص هى عبارة عن ملفات بالنسبة لنظام لينكس ولكن محرر النصوص هو من صُمم لكى يتعامل مع الملفات الكتابية وكيفية حفظها والتعديل عليها إلخ... من هذه الأمور ، كذلك وصلات الشبكة المختلفة يتعامل معها نظام لبنكس على أساس أنها ملفات مكونة من bits و bytes ولكن تطبيقات الانترنت هى من تعلم كيفية التعامل مع الوصلات الشبكية وهكذا .


    2.      أقصى طول لأسماء الملفات على نظام لينكس
     لنرجع قليلا بذاكرتنا إلى الخلف حين كنا نستخدم نظام Ms-Dos ولنتذكر كم كان أقصى طول للملفات ؟ الإجابة بسيطة جدا وهو ثمانية أحرف بالإضافة إلى ثلاثة أحرف هى امتداد ونوع الملف إذا كان نصى يأخذ الشكل txt. وإذا كان فيديو مثلا يأخذ الشكل wmv. وهكذا ولكى تلاحظ ذلك مثلا أنت تستخدم ويندوز قم بتسمية ملف نصى جديد بأى اسم ولكن راعى أن يكون الإسم طويلا مثل communication theory وتأكد من عدد أحرف الكلمة ستجدها عشرون حرفا ( البعض يندهش يقول هى تسعة عشر حرفا ) صحيح عدد الاحرف تسعة عشر حرفا ولكن لو تمعنا قليلا سوف نجد أننا قمنا بتحرير مسافة بين كلمة communication وكلمة theory ونظام التشغيل يتعامل معها على أساس أنها حرف من حروف الكلمة . والآن قم بعمل إعادة تشغيل الجهاز والدخول إلى نظام التشغيل Ms-Dos عن طريق قرص اقلاع ذاتى أو قرص مرن . لنفرض الآن أنك على محدث الأوامر الخاص بال Dos ويأخذ الشكل التالى مثلا <\:A بعد ذلك قم بالدخول إلى القسم الذى قمت بإنشاء الملف النصى عليه أوﻻ قم بكتابة اسم القسم وليكن :E ثم اضغط زر التأكيد Enter ثم قم باستعراض الملفات الموجودة على القسم باستخدام الأمر dir . الآن مثلا ظهرت الملفات الفرعية على القسم ماذا تلاحظ ؟ ...... سوف تلاحظ أن  Dos قام باختزال اسم الملف من communication theory إلى الشكل التالى commun~1.txt وظهرت علامة جديدة هى ~ وتفيد بإن هناك تكملة للإسم ، أما أنظمة Pre-Os X Macs فالطول الأقصى لأسماء الملفات فيها كبير نسبيا بالمقارنة بنظام Ms-Dos وهو واحد وثلاثين حرفا (31.

    أما عند الحديث عن أنظمة لينكس واليونكس بصفة عامة فحدث وﻻ حرج تستطيع الطرفية أن تتعامل مع أسماء ملفات طولها الحرفى يصل إلى 255 حرف ويعتبر طول مناسب جدا لوصف ما يحلو لك لأسماء ملفاتك عند التعامل معها من خلال الطرفية ! 
    ولكن من المفضل عند كتابة أسماء الملفات أﻻ يزيد طول الإسم على ثمانون حرفا كى يسهل عليك الأمر عند التعامل معه من خلال الطرفية حتى ﻻ يحدث انكسار للاسم فى سطر آخر هذه نصيحة فضلا ﻻ أمراً أمامك كل الخيارات مئتان فما أعلى !!!

    3.       الأسماء على لينكس حساسة تجاه الحروف الكبيرة والصغيرة 

    اختلافا مع الويندوز وأنظمة الماك نظام لينكس عالم آخر !! نعم ففى هذا العنصر تجد فيه دقة نظام لينكس المتناهية عند تحديد الأسماء والمسميات للملفات على النظام بمعنى أن لينكس يتعامل بحساسية مفرطة مع أسماء الملفات التى تحتوى حروفا كبيرة وصغيرة ولفهم ذلك مثال :
    يوجد لدينا ثلاثة ملفات بنفس الإسم ( لغويا ) وهم على الترتيب :
    *mysql.txt
    *Mysql.txt
    *MySQL.txt 

    فى المثال نجد ثلاثة ملفات نصية تحمل نفس الإسم من جهة اللغة ولكن من جهة نظام لينكس فالأمر مختلف جدا ، يتعامل لينكس مع هذه الأسماء الثلاثة على أنها ثلاثة ملفات مختلفة كل منها ﻻ يمت للآخر بصلة ، أما لو كنت على أحد أنظمة التشغيل الأخرى مثل نظام الويندوز وقمت مثلا بإنشاء الملف الاول mysql.txt وهممت بإنشاء الملف الثانى Mysql.txt سوف يقوم النظام بإعطاء رسالة تظهر أمامك مفادها " هذا الملف موجود مسبقا هل تريد وضع الملف الجديد مع استبداله بالملف القديم ؟ "
     وأما الحساسية فأيضا تعنى أن كل شىء بلينكس مختلف إذا تضّمن حروفا كبيرة وصغيرة ، بمعنى الأمر ls يختلف تماما عن Ls يختلف عن LS وهكذا قيس الأمور كلها على نفس هذا المنوال ولذلك يجب مراعاة هذه النقطة عند كتابتك لأمر ما أو ملف ما أن تقوم بكتابته بالشكل الصحيح حتى ﻻ يحدث ماﻻ يحمد عقباه مثلا قد تنوى حذف ملف معين كما ذكرنا بالأعلى مثل ملف mysql.txt ولكن عن طريق الخطأ قمت بإدخال اسم ملف آخر وهو Mysql.txt حينها سيستجيب لك النظام ويفعل ما تأمره به !!
    ولذلك من إحدى مميزات نظام لينكس أنه يعلمك الحذر فى كل ما تفعله ، وأن تكون دقيقا فى كل أمورك صغيرة كانت أو كبيرة والمثل المضروب بذلك " الوقاية خير من العلاج " ! وذاك شىءٌ جيد مقارنةً بأى نظام آخر P:

    4.      بعض العلامات الخاصة تتجنب كتابتها فى أسماء الملفات

    كل نظام تشغيل يحتوى على مجموعة من العلامات الخاصة تكون محجوزة للنظام فقط وﻻ يحق لأى مستخدم أن يقوم بوضعها فى أسماء الملفات على سبيل المثال عند تسمية ملف على نظام التشغيل ماك فلا يحق للمستخدم وضع(:) فى الأسم أو colon ،بالمثل مستخدمى ويندوز ﻻيحق لهم وضع ال (\) أو ال backslash،وبالتالى ينطبق هذا الأمر على لينكس كونه ﻻ يعدو نظام تشغيل له خصوصياته ومن أهم العلامات الخاصة المحجوزة للينوكس هى (/) أو forward slash..
    ولكى نستطيع فهم ذلك مثالا : نفترض أنك تريد استعراض محتويات ملف يحمل الإسم التالى:
     books/to_buy.txt ستقوم بتنفيذ الأمر التالى :

    less /home/oem/books/to_buy.txt
    على الفور ستظهر هذه الرسالة فى الطرفية مفادها :

    /home/oem/books/to_buy: No such file or directory

    ولكن لماذا حدث ذلك مع العلم أننا قمنا بكتابة اسم الملف بطريقة صحيحة ؟ 
    الإجابة حينما قمت أنت بكتابة اسم الملف المحتوى على ال/ قام سطر الاوامر بالبحث عن اسم الملف بالترتيب من خلال المسار المعطى أوﻻ فى المجلد home/ ثم المجلد oem/ وجاء ليقوم بفتح الملف وجد مجلد آخر اسمه books/ غير موجود بالمسار لأن علامة / بينت للطرفية أن ال to_buy ملف يندرج تحت مجلد آخر اسمه books/

    من ضمن العلامات الخاصة التى ﻻ يحق لمستخدم لينوكس استخدامها هى  (-) أو  dash فى بداية أسماء الملفات حيث أن استخدام هذه العلامة يحول الملف من ملف عادى ليكون فى صيغة جديدة وهى استخدام الملف كا option لأمر تقوم بتنفيذه من خلال الطرفية ولاستيعاب ذلك نفترض التالى :
     تحاول إنشاء ملف جديد باسم books_to_buy.txt- وبالفعل قمت بانشاءه ولكن لسبب ما أردت حذفه لأنك لست فى حاجة إليه فمن الطبيعى أن تقوم باستخدام الأمر rm وهو الأمر الخاص بحذف الملفات وبالتالى ستكون صيغة الأمر التالى كالاتي  :

    rm books to buy.txt
    ستتعامل الطرفية بالترتيب مع الأمر لتنفيذه كالتالى :

    أوﻻ ستحاول الطرفية حذف الملف books ثم الملف to ثم الملف buy.txt وبالتالى قد يحدث ماﻻ تتوقعه وتقوم بحذف ملفات أخرى ﻻ تريد حذفها ووقتها ﻻ يفيد الندم على ما فات تنبه لذلك !!!

    rm: cannot remove `books': No such file or directory
    rm: cannot remove `to': No such file or directory
    rm: cannot remove `buy': No such file or directory

    كما رأيت حاول الأمر rm حذف الملفات بالترتيب ولكن ﻻ جدوى !!
    ولكن سؤال يتبادر للأذهان وهو كيفية حذف ملف يحتوى اسمه على كلمات بينها مسافات ؟؟ 
    يأتى هنا دور ال \ أو ال backslash حيث تقوم هذه العلامة باهمال المسافة الموجودة بين كل كلمة من كلمات اسم الملف ولتوضيح ذلك ، من المثال السابق تريد حذف الملف books to buy.tx ستقوم بعمل التالى فى الشل او سطر الأوامر:            

    rm books\ to\ buy.txt\

    وسيكون كل شىء على ما يرام ولكنها طريقة مرهقة فلذلك من الأفضل عدم وضع مسافات بين كلمات أسماء الملفات . 
    ولكن أﻻ توجد طريقة افضل من تلك ال \ ؟ 
    بالفعل توجد طريقة أخرى نوعا ما أسهل لحذف ملفات تحتوى أسماؤها على مسافات بين كل كلمة وكلمة وهو وضع اسم الملف المراد حذفه بين علامتى " " أي quotation marks مثال :

    rm "books to buy.txt"

    ولكن مع مرور الوقت ستشعر بالإرهاق الشديد لكثرة استخدامك لل quotation makrs ولذلك من الأفضل كما أسلفنا عدم وضع مسافات سيكون خيار جيد أليس كذلك ؟
    وبعد أن استعرضنا بعض العلامات الخاصة بنظام لينوكس والتى ﻻ يمكن استخدامها عند تسمية الملفات ، يكون كل شىء متاح لك فى التسمية بدأ من استخدام حروف فقط سواء كانت حروف صغيرة أو كبيرة ، أو حروف مع أرقام ، أو حتى أرقام فقط.

    5.       WildCardsوما ظيفتها ؟

    تعال لنتخيل سويا أنك تمتلك ملف نصى و مجموعة من الصور لمناظر طبيعية وهذه الصور مثلا تأخذ ترتيبا رقميا تصاعدي وتريد مثلا حذف هذه الصور نظرا لوجود نسخة أخرى منها على القرص الصلب فكيف يمكنك عمل ذلك من خلال الطرفية او سطر الاوامر ؟ 

    الإجابة :
     يقينا ستقوم باستخدام أمر الحذف rm ،ولكن هل ستقوم بحذف الصور كل صورة على حدة أو دفعة واحدة ؟
    طبعا من الممكن أن تقوم بحذف الصور عن طريق الواجهة الرسومية باستخدام الفأرة وذلك بعمل ضغطة يمنى على المجلد الموجود فيه الصور وتختار كلمة Delete ، ولكن كيف لك أن تقوم بذلك من خلال الطرفية ؟ 
    هنا يأتى دور ال Wildcards فى تنفيذ أمر ما على مجموعة ملفات دفعة واحدة وحينها لن تحتاج لتنفيذ الأمر أكثر من مرة ، وال Wildcards عبارة عن علامات خاصة أيضا مكونة من:

     1-   * 
    أو   asterisk
     2-  ? 
    أو   question mark
     3-  [] 
    أو   square brackets

    لنستعرض كيفية الإستفادة من Wildcards  ، على سبيل المثال الصور تاخد الترتيب التالى :
    photo1.jpg
    photo2.jpg
    photo3.jpg
    photo4.jpg
    photo5.jpg
    photo6.jpg
    photo7.jpg
    photo8.jpg
    photo9.jpg
    photo10.jpg
    photo11.jpg
    photo12.jpg
    photo1.txt

    السؤال الأول : حذف الصور بالكامل ؟ 

    نقوم باستخدام  wildcard (*) لإهمال تأثير ما يأتى بعدها كالتالى :

    rm photo*.jpg

    هنا قام الأمر بحذف الصور كاملة ولكن مع الأخذ فى الاعتبار أننا قمنا بكتابة الإمتداد حتى ﻻ نقوم بحذف الملف photo1.txt

    السؤال الثانى : حذف الصور من رقم 10-12 ؟

    rm photo1*.jpg
    هنا قام الأمر بحذف الصور المرقمة من 10-12 مع الأخذ فى الإعتبار أننا قمنا بكتابة الإمتداد حتى ﻻ نقوم بحذف الملف photo1.txt  

    السؤال الثالث : حذف الصور بما فيها الملف النصى ؟ 

    rm photo*

    السؤال الرابع : حذف الملف النصى فقط ؟ 

    rm *.txt

    السؤال الخامس : حذف المجلد بالكامل ؟ 

    rm *

    كما رأينا كانت هذه بعض استخدامات * فى تنفيذ أمر عدة مرات بدون تكرار الأمر ونلاحظ السرعة فى تنفيذ الأوامر ولكن يجب الحذر حتى ﻻ نقع فى أخطاء تسبب مشاكل !!

    أما عن  wildcardالثانية وهى ?
    لتوضيح كيفية استخدامها نقوم بعمل التالى :

    السؤال الأول : حذف الصورة المرقمة من 10-12 ؟ 

    rm photo1?.jpg

    السؤال الثانى : حذف الصور المرقمة من 1-9 ؟ 

    rm photo?.jpg

    ﻻحظ هنا الفرق مابين ? ، *  أن  ?  تقوم بحذف خانة واحدة بعدها فقط وليس كل ما يليها ولذلك الصور من 10-12 لن تكون فى نتائج الحذف ( جرب ذلك بنفسك ) 

    السؤال الثالث : حذف الصور كلها بما فيها الملف النصى ؟ 

    rm photo?.*

    هذه كانت أمثلة على استخدام ال ? فى تنفيذ أمر عدة مرات بدون تكرار أيضا مع ملاحظة الفارق بينها وبين ال* فى حالة السؤال الثانى.

    والآن ننتقل إلى العلامة الثالثة والأخيرة وهى ال [] أو ال square brackets والتى تستطيع من خلالها تنفيذ أمر عدة مرات بدون تكرار ولنرى التالى :

    السؤال الأول : حذف الصور 11 ، 12 فقط ؟ 

    rm photo1[12]

    السؤال الثانى : حذف الصور من 10 - 12 ؟ 

    rm photo1[0-2]

    وهكذا لتحديد خيارات الحذف أو الصور المراد حذفها يتم وضعها داخل ال []
    وبعد أن استعرضنا بعض الأساسيات التى من الممكن احتياجها فى وقت ما سوف نستعرض أشياء أخرى تعتبر أساسية فى التعامل مع الطرفية وقد نقلتها من كتاب linux admin للكاتب أحمد نجيب الشهاوى لدعم الموضوع .

    أهم المفاتيح للتعامل مع سطر الاوامر :

    o       space به يتم الفصل بين الأمر والخيار الذى يتبعه
    o       enter‫ هذا المفتاح هو الذى يخبر الشل أنك انتهيت من كتابة الأمر لكى تبدأ فى التعامل مع الأمر .
    o       backspace ‫عند كتابة أمر أو خيار خطأ يتم به مسح الحروف الخاطئة .
    o       backspace‫عند كتابة أمر أو خيار خطأ يتم به مسح الحروف الخاطئة .
    ‫ tap يعتبر هذا المفتاح من أهم المفاتيح، فهو يظهر خاصية من أهم خصائص الطرفية أﻻ وهى إكمال الأمر .
    مثلا إذا أردت الأمر mkdir فما عليك إﻻ كتابة الأحرف  mkd ومن ثمّ ستكمل لك الطرفية بقية الأمر إذا ضغطت ‪ tabمرتين .أما إن كان هناك أكثر من أمر يبدأ ب ‪) mkdمثلا ‪ mkdir و ‪mkdev) ‫فسيتم عرضهم أمامك لكى تختار الأمر المناسب .
    ويلاحظ أنه إذا تم الضغط على البدون كتابة أى أحرف فسيعرض عليك النظام عرض كل الأوامر الموجودة به tab ،(يمكنك تجربة هذه الملاحظة) .

     shift+page up عند امتلاء الشاشة أﻣﺎﻣﻚ وأردت إسترجاع الجزء الذى اختفى بالأعلى فيمكننا بهذه المفاتيح رؤيتها.
    shift+page down 
     عكس الذى قبله
     up or down الأسهم أعلى وأسفل ، هذه أيضا تُظهر خاصية من الخصائص الهامة  ‫‪ shellﻓــ  up arrow  يأتى لك ثانية بالأمر السابق دون الحاجة لإعادة كتابته ثانية .
    ctrl+alt+F1 إذا كنت تعمل ﻋﻠﻰ الواجهة الرسومية وأردت الانتقال اﻟﻰ الواجهة النصية أى اﻟﺸﺎشة السوداء، فبهذه المفاتيح الثلاثة يمكنك اﻻنتقال اﻟﻴﻬﺎ . 

    "هناك 6 شاشات ‪ consolتبدأ من F1 وحتى  " F6أما F7 فترجع بك ثانية إلى الواجهة الرسومية"
    طبعا هذه كانت مقدمة بسيطة عن بعض العناصر والأساسيات اللى يجب أن نعرفها خلال استخدام سطر الأوامر.

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

    0 التعليقات :

    إرسال تعليق

    Item Reviewed: اساسيات مهمة في سطر الأوامر بنظام لينكس Rating: 5 Reviewed By: محمد أيوب
    Scroll to Top