تقدم لنا الواجهات الرسومية أو GUI تجربةً بصرية بديهية، وسهلة الاستخدام للتعامل مع الحواسيب والهواتف الذكية، والأجهزة اللوحية، فتجدنا ننتقل بين التطبيقات وصفحات الويب والمستندات والصور بنقرات بسيطة على الأيقونات والقوائم المنسدلة وبقية عناصر سطح المكتب التي توفرها نظم التشغيل المختلفة، مثل: ويندوز وماك ولينكس.
وعلى الرغم من سهولة استخدامها من قبل المستخدم العادي إلّا أن واجهات المستخدم الرسومية تبقى قاصرة نوعًا ما عن منحنا التحكم الإداري الكامل بالأجهزة بالكيفية التي نريدها، فقد تمنعنا من عمليات التثبيت أو التعديل أو الحذف لبعض البرامج والميزات والملفات، وهنا يبرز دور واجهة سطر الأوامر.
يشار لها بالرمز CLI وهو اختصار command-line interface، ويُعدّ إتقانها والتعود على استخدامها عبر الطرفية Terminal من أهم طرق التنقل بين حاسوبك الشخصي والخوادم السحابية، بغرض الوصول إليها والتحكم بها عن بعد بدون الحاجة للواجهات الرسومية.
توجد الواجهات الطرفية (التي تكتب ضمنها الأوامر) في معظم نظم التشغيل الحاسوبية، وتتوفر لها محاكيات خاصة بهيئة تطبيقات تُثبّت على الهواتف الذكية والأجهزة اللوحية. وهي تمنح المستخدمين تحكمًا أكبر بأجهزتهم عبر تعزيز صلاحيات الوصول المتاحة لمدير النظام administrator، وزيادة قدرة المستخدم على تخصيص بيئات العمل، وأتمتة العمليات التي يحتاجها، وإعطائه إمكانية الوصول إلى الأجهزة البعيدة، مثل الخوادم السحابية.
إذا كنت من مستخدمي واجهة سطر الأوامر الجدد، فسيعطيك هذا التمهيد فكرةً جيدة عن أساسيات استخدامها عبر الطرفية، وستكون في نهايته قادرًا على تطبيقها مع لينكس وماك، سواء على حاسوبك الشخصي أو على الخوادم. لمعلومات أكثر يمكنك أيضًا الاطلاع على مقال مقدمة إلى طرفية لينكس، ومقال دليل استخدام سطر الأوامر في عملية تطوير الويب من طرف العميل.
فهم النافذة الطرفية
عندما تستخدم حاسوبًا أو أي هاتف محمول لأول مرة عبر الواجهات الرسومية، ستبدأ رحلة التعرف عليه باستعراض التطبيقات الموجودة، وأماكن توضع الأشياء، لتتمكن من تخصيصه حسب احتياجاتك، والحالة نفسها لاستكشافه مع الطرفية، وهو ما سنتعرف عليه تباعًا ضمن المقال.
الطرفية المستخدمة هنا هي طرفية أوبنتو 20.04، إحدى أشهر توزيعات لينكس، المبني أساسًا على يونيكس، فإذا كان نظام التشغيل على حاسوبك هو لينكس أو ماك يمكنك تطبيق الأمثلة الواردة هنا بحرفيتها، فطرفية النظامين مشابهة لطرفية أوبنتو المعتمدة في المقال، وكليهما مبني على يونيكس. وإذا كنت تستخدم ويندوز يمكنك الاستعانة بمقال تثبيت نظام لينكس داخل نظام ويندوز في بيئة وهمية لتهيئة بيئة لينكس على حاسوبك نفسه.
افتح الآن الطرفية على حاسوبك أو استخدام أحد المواقع التي توفر طرفيات تفاعلية للتجربة مثل Glitch.com، وستحصل على نافذة شبيهة بهذه الصورة.
لاحظ رمز الدولار $
والمؤشر الوامض هنا ستبدأ الكتابة.
تدّل الرموز الموجودة في نهاية محث الأوامر prompt على مستوى مستخدم الطرفية، وفق التالي، وهي تنطبق على معظم نظم التشغيل المعتمدة على يونيكس أو التي تسمى nix*:
- رمز الدولار
$
للمستخدم العادي أي أنك سجلت دخول بحساب مستخدم عادي. - رمز المربع
#
للمستخدم صاحب أعلى الامتيازات.
يُعرف المستخدم ذو الرمز #
بأنه مستخدم الجذر Root، ويُعدّ مستخدمًا مميزًا أو مدير النظام الافتراضي.
ستجد الرمز $
في جميع الأمثلة هنا فقد طبقت بواسطة مستخدم عادي، لكنه يستطيع الحصول على امتيازات الجذر باستعمال الأمر sudo
.
اقتباسملاحظة مهمة: إذا كنت تعمل من طرفية تجريبية على موقع فلا لا داعي للقلق حول ما تكتبه وتنفذه، أما لو كنت تعمل من حاسوبك، توخى الحذر مع أي أوامر تنفذها بصلاحية
sudo
فقد تحدث تغيرات جذرية على حاسوبك، ويمكنك أخذ نسخة احتياطية من الملفات التي تتدرب عليها خاصة مع الأوامر الجديدة عليك.
افتح الطرفية على حاسوبك لنبدأ بالأمثلة العملية.
التآلف مع المجلدات
الأوامر التي نكتبها في سطر الأوامر هي تعليمات تخبر حاسوبك بما تريد تنفيذه، تكتب الأمر، ثم تضغط على زر ENTER أو RETURN ليبدأ التنفيذ.
اكتب مثلًا الأمر التالي في الطرفية، واضغط ENTER:
$ pwd
نفذ الأمر، وستحصل على الخرج التالي:
/home/sammy
يرمز الأمر pwd
إلى مجلد العمل الحالي، وهو اختصار للعبارة present working directory، ويساعدك على معرفة مكان وجودك الحالي ضمن نظام الملفات أي المجلد الذي تُنفذ منه الأوامر.
مجلد العمل الحالي في مثالنا هو home/sammy/
، وsammy
هو اسم المستخدم، قد يكون أي اسم آخر، فإذا سجلت دخولًا بحساب مستخدم الجذر root
صاحب أعلى الامتيازات، فسيكون مجلد العمل الحالي root/
، وعلى حاسوبك الشخصي سيسمى المجلد باسم المستخدم الذي تستعمله، غالبًا ما يطلق مالك الحاسوب اسمه على المستخدم فتجد المجلد باسمه أيضًا.
مجلد العمل الحالي فارغ الآن، لذا سننشئ ضمنه مجلدًا جديدًا اسمه الملفات أو files
مثلًا، نخزن فيه الملفات التي ستطبق عليها أمثلة المقال.
تُنشَأ المجلدات بواسطة الأمر mkdir
، وهو اختصار لعبارة make directory، ثم نكتب اسم المجلد الذي نود إنشائه بعد الأمر mkdir
، يلعب اسم المجلد هنا دور الوسيط، لأنه يمرر القيمة المدخلة إلى الأمر حتى يأخذ بها عند التنفيذ. يشبه الوسيط المفعول به في القواعد النحوية، فهو يمثل ما يتصرف به الفعل أو الأمر البرمجي في حالتنا.
اكتب السطر التالي في الطرفية لديك، يبدأ السطر بالأمر mkdir
، ويليه الوسيط files
وهو اسم المجلد الذي ننشئه:
$ mkdir files
اضغط Enter ونفذ الأمر، وفور ظهور المؤشر الوامض في السطر التالي سيكون مجلدك الجديد قد أُنشئ، وتكون جاهزًا لكتابة الأوامر التالية، لن تحصل على خرج يخبرك بإتمام عملية الإنشاء، فقط المؤشر الوامض.
عرض محتويات المجلدات وفهم صلاحيات العمل عليها
سنستخدم الأمر ls
المستوحى من كلمة list، لإظهار محتويات مجلد العمل الحالي (حيث أنشأنا مجلدنا الجديد)، يمكنك بهذه الطريقة التثبت من صحة إنشائه بما أنك لم تحصل على خرج صريح يؤكد ذلك.
$ ls
انظر الخرج، أنه يؤكد وجود المجلد files
:
files
يعطيك هذا الأمر معلومات عامة عن محتويات مجلد العمل الحالي، وتستطيع الحصول على معلومات تفصيلية أكثر باستعمال الرايات Flags. تكتب الرايات في لينكس بشكل شرطة -
متبوعة بحرف. تُمرِر الرايات للأمر الأساسي خياراتٍ إضافية أو وسطاء إضافيين. فعلى سبيل المثال يمكنك إضافة الراية l-
للأمر السابق ليظهر خرجه بتنسيق قائمة طويلة فيها معلومات مفصلة عن محتويات المجلد.
جرب كتابة الأمر مع الراية كما يلي:
$ ls -l
اضغط زر ENTER
للتنفيذ، وستحصل على الخرج الآتي:
total 4 drwxr-xr-x 2 sammy sammy 4096 Nov 13 18:06 files
يشير السطر الأول من الخرج إلى عدد الكتل blocks المحجوزة للمجلد في ذاكرة الحاسوب، عددها هنا 4، أما السطر الثاني فيتضمن صلاحيات المستخدم على المجلد وبعض التفاصيل الأخرى.
يمكنك أيضًا استعمال الراية h-
أو human-readable--
لتحصل على خرج أكثر مقروئية، فيظهر الحجم المخصص للمجلد في الذاكرة مقدرًا بالكيلو بايت مثلًا أي بصيغة أسهل للقراءة والفهم، كما هو موضح أدناه. ستلاحظ عند تعاملك مع الرايات: أن الشرطة الوحيدة -
تشير إلى راية يُعبر عنها بحرف وحيد، والشرطتان --
إلى الرايات التي تكتب بالكلمات، وتستخدم بعض الرايات الصيغتين فقد تكتب بحرف وحيد أو بالكلمات، يمكنك أيضًا كتابة أمر متعدد الرايات أو متعدد الوسطاء بتجميع رموز عدة رايات معًا مثل lh-
.
انظر الأمرين أدناه لهما المعنى نفسه تمامًا، لكن كل منهما مكتوب بطريقة:
$ ls -lh
$ ls -l --human-readable
سيعطي كلاهما الخرج نفسه، وهو مشابه لما حصلنا عليه سابقًا مع فارقٍ وحيد، إذ سيظهر الحجم بتنسيق سهل القراءة بسبب الراية الخاصة بالمقروئية:
total 4.0K drwxr-xr-x 2 sammy sammy 4.0K Nov 13 18:06 files
يبين الخرج السابق مجموعة معلومات عن المجلد، مثل: حجمه في الذاكرة 4K، وصلاحيات المستخدمين عليه وغير ذلك، انظر الجدول التالي للتوضيح:
نوع الملف | الصلاحيات | عدد الوصلات | اسم المالك | مجموعة العمل | حجم الملف | تاريخ آخر تعديل | اسم الملف |
---|---|---|---|---|---|---|---|
d | rwxr-xr-x | 2 | sammy | sammy | 4.0K | Nov 13 18:06 | files |
يتضمن الجدول سطرًا واحدًا فقط، لأننا نملك مجلدًا واحدًا files
في مجلد العمل الحالي home/sammy/
، ولو كان لدينا عدة مجلدات أو ملفات كنت ستجد سطورًا بعددها.
لنوضح الآن الرموز الموجودة في بداية السطر الثاني من الخرج:
المحرف | الوصف |
---|---|
d | أي مجلد أو directory، والمجلد في علم الحاسوب هو العنصر التنظيمي الذي يحتوي عدة ملفات، وإذا لم يكن العنصر مجلدًا فستجد شرطة - بدل الحرف d |
r | تعني صلاحية القراءة read، وتسمح للمستخدم بفتح الملف وقراءته، أو باستعراض محتويات المجلد |
w | صلاحية الكتابة write، تتيح تعديل محتويات الملف، وإضافة ملفات إلى المجلد أو حذف بعض من ملفاته أو تغيير أسمائها |
x | صلاحية تنفيذ ملف execute أو تشغيله كبرنامج، ومن جهة المجلدات تعني الصلاحية الدخول إلى المجلد والوصول إلى ملفاته |
حاول الآن قراءة الخرج السابق مجددًا، فلنبدأ بسلسلة المحارف drwx
، يعني المحرف الأول d
أن العنصر الموصوف هو مجلد، فلو كان نوعًا آخر، لبدأت السلسلة بالشرطة -
بدلًا منه على هذا الشكل rwx-
، أما المحارف الثلاثة التالية مخصصة لأذونات مالك المجلد، وتعني أن المالك لديه صلاحيات القراءة والكتابة والتنفيذ على مجلده المجلد files
، وإن استبدل أي محرف منها بالشرطة -
فسيفقد المالك الصلاحية التي يمثلها هذا المحرف.
وتمثل المحارف الثلاثة التي تليها صلاحيات مجموعة العمل، وهي r-x
في حالتنا، وتعني أن لدى المستخدمين المنتمين للمجموعة صلاحيات القراءة والتنفيذ على هذا المجلد، لكن لا يمكنهم التعديل عليه أبدًا فلا يملكون صلاحية الكتابة، إذ إن المحرف w
مستبدل بالشرطة -
.
أما المحارف الثلاثة الأخيرة r-x
فيقصد بها صلاحيات مجموعات العمل الأخرى على المجلد، وكما ترى تنحصر صلاحياتهم في القراءة والتنفيذ، ولا يملكون صلاحية الكتابة على المجلد.
يشير الرقم 2
(الذي يلي سلسلة المحارف) إلى عدد روابط المجلد، تشبه الروابط Links في لينكس الاختصارات التي تسهل على المستخدمين الوصول إلى نظام الملفات. وعند تنشئ أي ملف أو مجلد سيبني له لينكس تلقائيًا رابطين، رابط مطلق، ورابط ذاتي المرجع يتيح الوصول إليه عبر مسار نسبي، سيتضح لك معنى النسبي والمطلق في القسم التالي من المقال. ويمكنك معرفة المزيد عن روابط لينكس بمراجعة المقال دليل المستخدم للروابط في نظام ملفات لينكس.
ستجد بعد الرقم 2
كلمة sammy
مكررة مرتين، تشير الأولى منها إلى اسم مالك المجلد، وقد تعرفنا على صلاحياته قبل قليل وهيrwx
، أما لماذا sammy
هو المالك فالسبب أننا أنشأنا المجلد files
من حسابه. يفيدك دائمًا معرفة اسم المستخدم مالك الملفات في بيئة العمل الفعلية.
وتدّل كلمة sammy
الثانية على اسم مجموعة العمل المستفيدة من المجلد files
أي التي تملك حق الوصول إليه، وصلاحياتها كما رأينا r-x
، يتطابق اسم المستخدم هنا مع اسم مجموعة العمل، لكنه ليس أمرًا إلزاميًا، فستصادف في بيئات العمل الفعلية مجموعات عمل مختلفة، مثل: مجموعة الموظفين العاديين وقد يكون اسمها staff، ومجموعة مدراء النظام باسم admin مثلًا أو غير ذلك.
أما بقية المعلومات الموجودة في الخرج فهي: الحجم المخصص للمجلد في الذاكرة، وقدره 4 كيلو بايت، بالإضافة إلى تاريخ آخر تعديل أجري عليه قبل تنفيذ التعليمة.
أصبح لدينا الآن أرضية ننطلق منها لقسمنا التالي المتعلق بالتنقل عبر نظام الملفات.
التنقل ضمن نظام الملفات
تعلمت كيف تحدد موقعك الحالي في نظام الملفات، وكيف تنشئ مجلدًا جديدًا، وتستعرض محتوياته، وتحدد صلاحيات الوصول إليه والتحكم به.
سنجرب الآن التنقل بين مجلدات نظام الملفات، أنشأنا المجلد files
في المجلد الأساسي للمستخدم sammy
وهو home/sammy/
، فما طريقة الانتقال من home/sammy/
إلى home/sammy/files/
؟ يمكنك الانتقال باستعمال الأمر cd
، وهو اختصار للعبارة change directory التي تعني تغيير المجلد، اكتب إذًا السطر التالي في واجهة الطرفية لديك:
$ cd files
لن تحصل على رسالة أو خرج يؤكد لك صحة تنفيذ الأمر، وأنك في المسار home/sammy/files/
، كما هو الحال مع أمر إنشاء المجلد في القسم السابق، ستتلقى فقط المؤشر الوامض، لذا استعمل الأمر pwd
لتتأكد من ذلك:
$ pwd
سيظهر الخرج التالي:
/home/sammy/files
يؤكد الخرج السابق وجودك في المجلد home/sammy/files/
الذي يقع ضمن مجلد المستخدم home/sammy/
، تبدو هذه المسارات المفصولة بالشرطات المائلة مألوفة بالنسبة لك؟ ملاحظتك صحيحة لأنها تشبه عناوين URL لمواقع الويب، فهذه المواقع في نهاية الأمر تتوضع ضمن مجلدات على خوادم الويب.
يساعدك الأمر / cd
على الوصول إلى المجلد الرئيسي للخادم من أي مكان في نظام الملفات:
$ cd /
نفذ الآن الأمر التالي لتستعرض محتويات المجلد الرئيسي:
$ ls
ستحصل على هذا الخرج:
bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run s sbin srv sys tmp usr var
هذه هي محتويات المجلد الرئيسي /
لنظام لينكس، ويسمى أيضًا مجلد الجذر، وهو يختلف تمامًا عن مستخدم الجذر الافتراضي root، ويتمتع بأهمية كبيرة في نظام لينكس إذ يتضمن كل المجلدات الضرورية لعمل نظام التشغيل، فعلى سبيل المثال: يحتوي المجلد الفرعي sys
على نواة النظام kernel، ومعلومات النظام عن نظام الملفات الافتراضي، يمكنك معرفة المزيد عن محتويات مجلد الجذر بمراجعة توثيقات لينكس الرسمية.
لاحظ أن المجلد home/
الخاص بالمستخدمين موجودٌ هنا أيضًا، ويمكنك الانتقال إليه من مجلد الجذر /
ثم الانتقال إلى المجلد files
، أو استخدام الأمر cd
والانتقال إلى files
مباشرةً من مجلد الجذر /
وفق التالي:
$ cd /home/sammy/files
نفذ الآن الأمر pwd
وستحصل على home/sammy/files/
في الخرج.
سنعرض الآن المسارات في لينكس، مسار الملف File Path هو توصيف لمكان وجود الملف أو المجلد على حاسوبك أو على الخادم، المسارات نوعان نسبي ومطلق، النسبي هو الذي يحدد موقع الملف أو المجلد الهدف نسبةً إلى مجلد العمل الحالي، يشبه طريقة انتقالنا إلى داخل المجلد /files
عندما كنا في مجلد العمل الحالي home/sammy/
. أما المسار المطلق فهو موقع الملف انطلاقًا من مجلد الجذر، كما فعلنا في الأمر أعلاه باستخدام home/sammy/files/
، فقد بدأنا بمجلد الجذر /
، ثم استدعينا home/sammy/
، وبعدها /files
الموجود بداخله، إذًأ فالمسار المطلق يبدأ دائمًا بإشارة الجذر /
.
النقط dot أيضًا هي أسلوب للتنقل عبر المسارات النسبية في لينكس. تشير النقطة الوحيدة .
إلى مجلد العمل الحالي، والنقطتان ..
إلى المجلد الأب، فمثلًا لو كنت في المجلد home/sammy/files/
يمكنك استخدام النقطتين للوصول إلى المجلد الأب home/sammy/
، وفق التالي:
$ cd ..
يمكنك اختبار صحة التنفيذ باستخدام pwd
لعرض مجلد العمل الحالي، ستحصل عندها على home/sammy/
، وتستطيع أيضًا تنفيذ ls
لعرض المحتويات فسيظهر لك المجلد files
.
يوجد رمزٌ آخر يفيدك في التنقل هو الرمز ~
، ينقلك مباشرةً من أي مكان في نظام الملفات إلى المجلد الأساسي home للمستخدم الذي سجلت دخولًا باسمه، في مثالنا المسخدم هو sammy والمجلد الأساسي له يدعى home/sammy/
، على حاسوبك سيكون باسم المستخدم الذي تنفذ الأوامر من حسابه.
جرب الأمر التالي على الطرفية لديك، وسيأخذك بنقلة واحدة إلى المجلد الأساسي لمستخدمك:
$ cd ~
سنتعلم في القسم التالي كيفية التعامل مع الملفات النصية.
إنشاء الملفات النصية وتعديلها
تأكد في البداية من وجدوك في المجلد /files
، لديك طريقتين للقيام بذلك، إما الاستعلام عن مسار العمل الحالي بواسطة الأمر pwd
، أو الانتقال مباشرة إلى المجلد بواسطة مساره المطلق وفق التالي:
$ cd /home/sammy/files
سننشئ الآن ملفًا نصيًا بلاحقة txt.
وهي لاحقة قياسية يقرأها نظام التشغيل بدون أي برامج إضافية كما هو الحال مع ملفات doc.
مثلًا. والنصوص المكتوبة ضمن الملفات من نوع txt.
هي نصوص غير منسقة، يمكن استخدامها بسهولة داخل نافذة سطر الأوامر، أو عند التعامل مع النصوص برمجيًا، مثل: التحليل الآلي للنص، أو سحب المعلومات من نص معين، أو غير ذلك.
سننشئ الملف بكتابة الأمر touch
، المخصص لإنشاء الملفات النصية وتعديلها، ثم تمرير اسم الملف النصي بصفته وسيطًا له، وفق التالي:
$ touch ocean.txt
بمجرد الضغط على زر ENTER
ستنتقل لسطر جديد في نافذة سطر الأوامر بدون أي رسالة تؤكد إنشاء الملف النصي، لذا يمكنك استعراض محتويات المجلد /files
للتأكد من وجود الملف بداخله.
$ ls
وسيكون الخرج:
ocean.txt
أنشأنا إذًا الملف النصي ocean.txt
لكنه فارغ، ولو أردنا إنشاء ملف نصي مجهز ببعض الكلمات فسيفيدنا في ذلك الأمر echo
المخصص لعرض السلاسل النصية في نافذة سطر أوامر لينكس.
يعمل الأمر echo
على ترديد ما تكتبه بعده في نافذة سطر الأوامر. لنجرب ذلك بالعبارة المعتادة !Hello, World
:
$ echo Hello, World!
وهذا هو الخرج:
Hello, World!
يأتي اسم echo
أو الصدى من إيكو حورية الجبل التي تردد ما يقال لها فقط دون أي قدرة على حديث نابع من نفسها، حسب الأسطورة اليونانية القديمة في كتاب التحولات لأوفيد، والأمر echo
هنا يكرر ما يكتب بعده فقط دون اجتهاد، وفي مثالنا أظهر العبارة !Hello, World
كما هي في نافذة سطر الأوامر. أما لو رغبت باستخدامه لتخزين هذه العبارة أو غيرها في ملف نصي ما، فيتعين عليك كتابته بهذه الطريقة:
$ echo "Sammy the Shark" > sammy.txt
يبدأ السطر السابق بالأمر echo
، يليه العبارة النصية التي نريد كتابتها في الملف، وبعده سهم إعادة التوجيه <
، ثم اسم الملف النصي الجديد sammy.txt
.
تفحص الآن وجود الملف sammy.txt
بواسطة الأمر ls
وفق التالي:
$ ls
وسيكون الخرج:
ocean.txt sammy.txt
يظهر الخرج السابق وجود ملفين في المجلد home/sammy/files/
، يمكنك استعراض الملف sammy.txt
للتأكد من وجود العبارة النصية التي خزنتها فيه، وذلك باستخدام الأمر cat
، وهو من أشهر أوامر لينكس، ويستعمل لعرض مضمون الملفات النصية ووظائف أخرى تتعلق بها:
$ cat sammy.txt
نفذ الأمر وستحصل على الخرج التالي:
Sammy the Shark
جرب استخدام cat
مع الملف ocean.txt
، لن تحصل على شيء لأنه فارغ من أي محتوى، أضف إليه أي عبارة تريدها بواسطة الأمر echo
كما شرحنا سابقًا، سنضيف مثلًا اقتباسًا شهيرًا للكاتبة زورا نيل هيرستون، انظر للأمر التالي:
$ echo "Some people could look at a mud puddle and see an ocean with ships." > ocean.txt
استخدم cat
معه مجددًا ولاحظ الفرق في الخرج:
Some people could look at a mud puddle and see an ocean with ships.
سنتعرف الآن على طريقة تعديل محتوى الملف النصي، ستحتاج لهذا العمل محرر نصوص يعمل مع سطر الأوامر، الخيارات متنوعة أبرزها: vim و Emacs و nano. سنستخدم هنا nano.
يمكنك استدعائه بالأمر nano
وتمرير اسم الملف الذي تريده تعديله بصفته وسيطًا له، انظر التالي:
$ nano sammy.txt
سيفتح الآن الملف sammy.txt
، وتجد فيه المحتوى التالي:
Sammy the Shark
حرك المؤشرة باستعمال أسهم لوحة المفاتيح لتصل إلى نهاية العبارة الموجودة في الملف، واكتب ما تريده بعدها.
اقتباسملاحظة: لا يمكنك استعمال الماوس مع نافذة سطر الأوامر، سواء للتنقل عبر نظام الملفات أو لتحرير النصوص، فالاعتماد الكلي هنا على لوحة المفاتيح، وخاصةً أسهم التمرير.
لنفترض أنك أضفت التعديلات التالية إلى الملف:
Sammy the Shark Hello, I am Sammy. I am studying computer science. Nice to meet you!
حان الآن موعد الحفظ، فكيف تحفظ التعديلات؟ لاحظ الكلمات الموجودة في أسفل النافذة الطرفية لديك، تبدو مثل هذا:
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos ^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell
هي تشرح نفسها نوعًا ما، فبجانب كل رمز كلمة توضح وظيفته.
أو ما ينبغي معرفته أن الرمز ^
يشير لزر CTRL
أو Control
على لوحة المفاتيح. وما دام أننا أنهينا التعديلات سنضغط CTRL
مع حرف X
معًا لنحصل على مفعول Exit
، ونغلق الملف، وانتبه لكتابة الحرف x
حرف صغير أي بدون استخدام الزر Shift
.
CTRL x
ستجدها في التوثيقات مكتوبة بصيغة CTRL + X
أو Ctrl+x
، وهي تعني الضغط على الزرين في الوقت نفسه.
اضغط الزرين الآن، وستحصل مباشرةً على الرسالة التالية:
Save modified buffer? Y Yes N No ^C Cancel
اضغط الزر Y
لحفظ التغييرات.
Y
وسيؤكد لك النظام عملية الحفظ بإظهار الخرج التالي:
File Name to Write: sammy.txt
تتضمن الرسالة خيارات إضافية مثل الضغط على CTRL + C
للإلغاء، لكن إذا كنت واثقًا من رغبتك بالخروج من الملف اضغط على ENTER
لحفظ التغييرات على الملف والخروج منه.
لنفترض على سبيل المثال أنك تريد إنشاء عدد من الملفات النصية لطلبة أكاديمية حسوب، ملف لكل طالب، وسامي sammy هو أحد الطلاب، ستنشئ في البداية مجلدًا جديدًا يدعى الطلاب students
مثلًا ضمن المجلد /files
، ثم تنقل الملف sammy.txt
إليه.
أولًا تعليمة إنشاء المجلد:
$ mkdir students
والآن تعليمة النقل بواسطة الأمر mv
(المستوحى من كلمة move)، يأخذ هذا الأمر وسيطين، الوسيط الأول هو الملف المراد نقله، والوسيط الثاني هو موقعه الجديد، انظر التعليمتين التاليتين فلهما النتيجة نفسها:
$ mv sammy.txt students
$ mv sammy.txt students/sammy.txt
تعمل mv
في التعليمة الأولى على نقل الملف مع الحفاظ على اسمه، أما في الثانية فيمكنك تغيير اسم الملف عند نقله إذا رغبت بذلك، تستطيع مثلًا كتابتها على الشكل التالي:
mv sammy.txt students/sammy-the-shark.txt
إذا استعرضت محتويات المجلد /files
باستخدام الأمر ls
، ستجد ضمنه الملف ocean.txt
، والمجلد الجديد students
، انتقل إلى المجلد /students
، وفق الآتي:
$ cd students
أنت الآن ضمن المجلد /students
، فلنفترض أنك تحتاج لاستخدام الملف sammy.txt
على أنه قالب يسهل عليك إنشاء ملفات بقية الطلاب، فأول ما يتبادر إلى ذهنك هو نسخ الملف sammy.txt
إلى عدة نسخ ثم التعديل عليها حسب بيانات كل طالب، تجري عملية النسخ باستخدام الأمرcp
وهو اختصار لكلمة copy. وعلى غرار mv
فإنه يأخذ وسيطين، الوسيط الأول اسم الملف الأصلي أي المطلوب نسخه، والوسيط الثاني اسم الملف الجديد، انظر التعليمة التالية لإنشاء نسخة من ملف الطالب سامي sammy.txt
وتسميتها باسم جديد لتمثل طالب آخر أليكس alex.txt
مثلًا:
$ cp sammy.txt alex.txt
افتح الآن الملف alex.txt
باستخدام محرر النصوص، ستجد محتواه مطابق تمامًا لمحتوى الملف sammy.txt
، عدّل البيانات التي تحتاج لتعديلها، ليصبح مثلًا كما هو مبين أدناه، ونود لفت انتباهك إلى قدرتك على حذف سطر كامل من الملف بخطوة واحدة، عبر الضغط على CTRL + K
معًا:
Alex the Leafy Seadragon Hello, I am Alex. I am studying oceanography. Nice to meet you!
أغلق الملف الجديد الآن واحفظ التغييرات، بالضغط على CTRL + x
ثم Y
ثم ENTER
.
حاول إنشاء ملفات نصية أخرى للتدريب، وعندما تصبح جاهزًا انتقل معنا للقسم التالي لنتعرف على أوامر ومميزات جديدة.
الإكمال التلقائي وسجل الأوامر المحفوظة
توفر معظم واجهات سطر الأوامر مميزات، مثل: الإكمال التلقائي للأوامر، وإعادة استخدام الأوامر السابقة، تسهل عمل المستخدمين عليها، وتسرّع وتيرته.
جرب بنفسك، حاول مثلًا كتابة الأمر cat
مع الأحرف الأولى من أحد الملفات التي عملنا عليها نحو cat sa
قبل أن تكمل اسم الملف sammy.txt
بالكامل، اضغط على زر TAB
من لوحة المفاتيح ولاحظ ميزة الإكمال التلقائي، فالطرفية ستكمل اسم الملف تلقائيًا وتظهره لك دون أن تكمل أنت كتابته، كما هو مبين أدناه:
$ cat sammy.txt
والآن إذا ضغطت ENTER
ستنفذ التعليمة بطريقة طبيعية، ويظهر محتوى الملف النصي.
حاول بعدها الضغط على السهم الأعلى UP
من أسهم التمرير في لوحة المفاتيح، وشاهد ما سيظهر، ستجد أن الطرفية تعرض عليك آخر أمر نفذته، اضغط السهم UP
بوتيرة أسرع وسترى الأوامر التي نفذتها مؤخرًا، يمكنك بذلك الوصول إلى الأمر الذي تريد إعادة تنفيذه دون كتابته من جديد.
تستطيع أيضًا استعراض كافة الأوامر المستخدمة سابقًا في هذه الجلسة، باستخدام الأمر history
:
$ history
ستحصل في الخرج على سجل يتضمن جميع الأوامر المحفوظة، مثل التالي:
1 pwd 2 mkdir files 3 ls 4 ls -l ...
تفيدك هذه الاختصارات في رفع إنتاجيتك عند العمل مع واجهة سطر الأوامر.
العمل مع الملفات عبر الويب
تتيح لك واجهة سطر الأوامر، الموجودة على حاسوب متصل بالإنترنت، الوصول إلى جميع الموارد المتاحة على الويب، يمكنك مثلًا: الاتصال بخادم سحابي عن طريقها إذا كنت تعرف بيانات الاعتماد الخاصة به، أو إدارة البنية التحتية السحابية لشركتك، أو القيام بأنشطتك الخاصة بتطوير تطبيقات الويب أو غير ذلك. وما دام أنك تعلمت طريقة التعامل مع الملفات النصية، فستكون خطوتنا الأولى التعرف على كيفية سحب ملف نصي من الويب ليكون متاحًا على حاسوبك الشخصي.
انتقل للمجلد /files
:
$ cd /home/sammy/files
سنستخدم الآن الأمر crul
، والذي يرمز إلى client URL، لجلب البيانات من الويب إلى طرفيتك. رفعنا -يقول كاتب المقال- ملف نصيًا لغرض التجربة يتضمن مقطعًا قصيرًا من رواية على خادم سحابي، وسنستخدم عنوان URL الخاص به في تعليمة crul
التالية:
$ curl https://assets.digitalocean.com/articles/command-line-intro/verne_twenty-thousand-leagues.txt
ما إن تضغط على زر ENTER
ستتلقى محتوى الملف النصي في واجهة الطرفية، وهو في حالتنا مقطعًا من رواية، وفق التالي:
"You like the sea, Captain?" "Yes; I love it! The sea is everything. It covers seven tenths of the terrestrial globe. ... "Captain Nemo," said I to my host, who had just thrown himself on one of the divans, "this is a library which would do honor to more than one of the continental palaces, and I am absolutely astounded when I consider that it can follow you to the bottom of the seas."
ظهر محتوى الملف النصي على واجهتك الطرفية، لكنه في الواقع لم يخزن على حاسوبك المحلي حتى الآن، يمكنك التأكد من ذلك بواسطة الأمر ls
، فما طريقة تخزينه إذًا؟ الحل هو استخدام الخيار أو الراية O-
مع الأمر curl
، وعندها سيُخَزَّن الملف محليًا باسم الملف البعيد نفسه.
$ curl -O https://assets.digitalocean.com/articles/command-line-intro/verne_twenty-thousand-leagues.txt
وستحصل على رسالة في واجهة الطرفية، تخبرك بنجاح عملية التنزيل، تشبه صيغتها التالي:
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2671 100 2671 0 0 68487 0 --:--:-- --:--:-- --:--:-- 68487
يمكنك أيضًا تنزيل الملف من الويب وحفظه على الحاسب باسم مختلف عن اسمه الأصلي، بالاسم jules.txt
مثلًا، وذلك بتمرير الاسم الجديد بصفة وسيط إضافي للأمر crul
مع الخيار o-
، وفق التالي:
$ curl -o jules.txt https://assets.digitalocean.com/articles/command-line-intro/verne_twenty-thousand-leagues.txt
تستطيع الآن عرض الملف بواسطة cat
، أو تحرير عبر nano
.
يفيدك أيضًا مراجعة المقال دليل استخدام سطر الأوامر في عملية تطوير الويب من طرف العميل لمزيد من الأمثلة من المعلومات المفيدة.
يتناول القسم الأخير من المقال طرق حذف الملفات وإنهاء تنفيذ الأوامر.
حذف الملفات وإنهاء تنفيذ الأوامر
ستتعرض بالتأكيد لحالات تحتاج فيها لحذف ملف أو مجلد، أو لإنهاء تنفيذ أمر معين، أو الخروج من تطبيق تستخدمه، سنتعلم ذلك.
بالعودة إلى مثال طلاب الأكاديمية، فلنفترض أنك تحتاج لحذف ملفات بعض الطلاب لأنهم تخرجوا مثلًا. تأكد أولًا من وجودك في المجلد /students
، يمكنك تنفيذ الأمر التالي للانتقال إليه:
$ cd /home/sammy/files/students
نفذ الآن الأمر ls
لاستعراض محتويات المجلد، وبما أننا أنشأنا عددًا من الملفات مسبقًا، فستحصل على الخرج التالي:
alex.txt drew.txt jamie.txt jesse.txt sammy.txt taylor.txt
يمكنك حذف الملفات المفردة من مجلد الطلاب /students
باستخدام الأمر rm
.
اقتباستحذير: لا يمكنك التراجع عن حذف الملفات، لذا كن حذرًا، وتأكد من رغبتك بحذف الملف قبل الضغط على زر
ENTER
.
لنحذف مثلًا الملف sammy.txt
وفق الآتي:
$ rm sammy.txt
استعرض مجددًا محتويات المجلد باستخدام ls
، ولاحظ عدم وجود الملف sammy.txt
بينها:
alex.txt drew.txt jamie.txt jesse.txt taylor.txt
إذا رغبت بحذف المجلد /students
كاملًا مع كافة محتوياته، فستحتاج للأمر rmdir
الذي يختصر العبارة remove directory. انتقل في البداية إلى المجلد الأب files
ونفذ أمر حذف المجلد /students
من هناك، فلا يمكنك حذف أي مجلد طالما أنك تعمل ضمنه.
$ cd ..
نحن الآن في المجلد /home/sammy/files/
، وحاول حذف مجلد الطلاب students
من هنا باستخدام rmdir
، وفق التالي:
$ rmdir students
وستحصل على رسالة الخطأ التالية في الخرج:
rmdir: failed to remove 'students': Directory not empty
تفيد الرسالة بعدم إمكانية حذف المجلد لأنه غير فارغ، يمكنك بالتأكيد معالجة الموضوع بحذف الملفات الفردية من المجلد students
واحدًا تلو الآخر، ثم حذف المجلد، لكنها ليست بالطريقة الأمثل وخاصة إذا كان عدد الملفات كبير. بالمناسبة يمكنك إنشاء مجلد فارغ ومحاولة حذفه باستخدام الأمر rmdir
والتأكد من فعاليته مع المجلدات الفارغة.
أما حذف المجلدات الممتلئة، فيتطلب استخدام الأمر rm
مع الراية أو الخيار r-
، ترمز هذه الراية إلى الكلمة الإنكليزية recursion أو العودية التي تصف الدوال أو العمليات الحاسوبية التي تستدعي نفسها ذاتيًا مرارًا وتكرارًا، فبالتالي عند استخدامها مع أمر الحذف سيُحذَف العنصر مع كل محتوياته. اكتب إذًا الأمر التالي، ومرر اسم المجلد students
بعد أمر الحذف:
$ rm -r students
تأكد من صحة حذف المجلد /students
مع جميع ملفاته، بتنفيذ الأمر ls
.
أنهيت أعمالك في الطرفية سواء كنت تعمل على حاسوبك الشخصي أو تتصل بخادم بعيد وتريد الخروج منها؟ اكتب إذًا الأمر exit
وفي حال كنت متيقنًا من كل شيء اضغط على زر ENTER
، فمجرد مغادرتك لجلسة العمل لن تتمكن من استعادتها مجددًا.
$ exit
ستحصل على الخرج التالي بعد الضغط على زر إنتر، ليؤكد لك إنتهاء جلسة العمل وخروجك منها.
Session ended
الخلاصة
قدم المقال بداية تعريفية لكل راغب ببدء العمل مع الواجهة الطرفية وسطر الأوامر، سواء لإدارة الحواسيب أو الخوادم السحابية البعيدة.
يوجد العديد من المقالات المفيدة في هذا المجال على أكاديمية حسوب، استعرض قسم لينكس وقسم الحوسبة السحابية، واقرأ ما يناسبك منها.
ترجمة -وبتصرف- للمقال A Linux Command Line Primer لصاحبته Lisa Tagliaferri.
اقرأ أيضًا
#3qpa7meed #ArabProgrammers #المبرمجون_العرب #arab_programmers #عقبة_البرق
تعليقات
إرسال تعليق