في الدرس الماضي
تعرفنا على مقدمة بسيطة لطرفية او سطر الأوامر 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 حرف ويعتبر طول مناسب جدا لوصف ما يحلو لك لأسماء ملفاتك عند التعامل معها من خلال الطرفية !
أما عند الحديث عن أنظمة لينكس واليونكس بصفة عامة فحدث وﻻ حرج تستطيع الطرفية أن تتعامل مع أسماء ملفات طولها الحرفى يصل إلى 255 حرف ويعتبر طول مناسب جدا لوصف ما يحلو لك لأسماء ملفاتك عند التعامل معها من خلال الطرفية !
ولكن من المفضل
عند كتابة أسماء الملفات أﻻ يزيد طول الإسم على ثمانون حرفا كى يسهل عليك الأمر
عند التعامل معه من خلال الطرفية حتى ﻻ يحدث انكسار للاسم فى سطر آخر هذه نصيحة
فضلا ﻻ أمراً أمامك كل الخيارات مئتان فما أعلى !!!
3. الأسماء على
لينكس حساسة تجاه الحروف الكبيرة والصغيرة
اختلافا مع الويندوز وأنظمة الماك نظام لينكس عالم آخر !! نعم ففى هذا العنصر تجد فيه دقة نظام لينكس المتناهية عند تحديد الأسماء والمسميات للملفات على النظام بمعنى أن لينكس يتعامل بحساسية مفرطة مع أسماء الملفات التى تحتوى حروفا كبيرة وصغيرة ولفهم ذلك مثال :
يوجد لدينا
ثلاثة ملفات بنفس الإسم ( لغويا ) وهم على الترتيب :
*mysql.txt
*Mysql.txt
*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 لأمر تقوم بتنفيذه من خلال الطرفية ولاستيعاب ذلك نفترض التالى :
من ضمن العلامات الخاصة التى ﻻ يحق لمستخدم لينوكس استخدامها هى (-) أو 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 photo*
السؤال الرابع : حذف الملف النصى فقط ؟
rm *.txt
السؤال الخامس : حذف المجلد بالكامل ؟
rm *
كما رأينا كانت هذه بعض استخدامات * فى تنفيذ أمر عدة مرات بدون تكرار الأمر ونلاحظ السرعة فى تنفيذ الأوامر ولكن يجب الحذر حتى ﻻ نقع فى أخطاء تسبب مشاكل !!
أما عن wildcardالثانية وهى ?
لتوضيح كيفية
استخدامها نقوم بعمل التالى :
السؤال الأول : حذف الصورة المرقمة من 10-12 ؟
rm photo1?.jpg
السؤال الثانى : حذف الصور المرقمة من 1-9 ؟
السؤال الأول : حذف الصورة المرقمة من 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) فسيتم عرضهم أمامك لكى تختار الأمر المناسب .
مثلا إذا أردت الأمر mkdir فما عليك إﻻ كتابة الأحرف mkd ومن ثمّ ستكمل لك الطرفية بقية الأمر إذا ضغطت tabمرتين .أما إن كان هناك أكثر من أمر يبدأ ب ) mkdمثلا mkdir و mkdev) فسيتم عرضهم أمامك لكى تختار الأمر المناسب .
ويلاحظ أنه إذا
تم الضغط على البدون كتابة أى
أحرف فسيعرض عليك النظام عرض كل الأوامر الموجودة به tab ،(يمكنك
تجربة هذه الملاحظة) .
shift+page up عند امتلاء
الشاشة أﻣﺎﻣﻚ وأردت إسترجاع الجزء الذى اختفى بالأعلى فيمكننا بهذه
المفاتيح رؤيتها.
shift+page down عكس الذى قبله
shift+page down عكس الذى قبله
up or down الأسهم أعلى
وأسفل ، هذه أيضا تُظهر خاصية من الخصائص الهامة shellﻓــ up arrow يأتى لك ثانية بالأمر السابق دون الحاجة لإعادة كتابته ثانية
.
ctrl+alt+F1 إذا كنت تعمل
ﻋﻠﻰ الواجهة الرسومية وأردت الانتقال اﻟﻰ الواجهة النصية أى اﻟﺸﺎشة السوداء، فبهذه المفاتيح الثلاثة
يمكنك اﻻنتقال اﻟﻴﻬﺎ .
"هناك 6
شاشات consolتبدأ من F1 وحتى " F6أما F7 فترجع بك ثانية إلى
الواجهة الرسومية"
طبعا هذه كانت
مقدمة بسيطة عن بعض العناصر والأساسيات اللى يجب أن نعرفها خلال استخدام سطر
الأوامر.
في
الموضوع المقبل انشاء الله سنتعرف على الأوامر الأساسية اللى تقريبا ستحتاجها
لستخدام سطر الأوامر في نظام لينكس .
0 التعليقات :
إرسال تعليق