يعدّ التعامل مع الملفات النصيّة من المهامّ المتكرّرة التي على مدير النّظُم تنفيذها. تشمل هذه المهمّة التّعديل على الملفّات الموجودة (ملفات إعداد غالبا) أو إنشاء ملفّات جديدة. سنقدّم في هذا الدّرس البرنامجيْن الأكثر استخداما لتحرير الملفات النصيّة على RHEL (وتوزيعات لينكس عموما)؛ وهما Nano و Vim. يشتهر Nano بسهولة استخدامه، خصوصا بالنسبة للمبتدئين؛ فيما يتميّز Vim بإضافاته الفعّالة التي تجعل منه أكثر من مجرّد محرّر نصوص. لن ندخل في شرح المحرّر الذي يجب عليك اختيّاره؛ جرّب ثم اختر ما يناسبك.
استخدام Nano لتحرير الملفات النصية
يُستخدَم أمر nano
لبدء تشغيل محرّر النصوص Nano. يمكن فتح ملفّ بتمرير مساره إلى الأمر؛ سيظهر محتوى الملفّ في هذا الحالة داخل المحرّر. إن لم يكن الملفّ موجودا فسيُنشئ المحرّر ملفا فارغا بنفس الاسم ويفتحه إلا أنه لن يُخزَّن إلا إذا طلبت ذلك من المحرّر (سنرى كيف في ما بعد). إن استُخدِم الأمر دون معطيات فسيظهر المحرّر بمحتوى فارغ.
يظهر في أعلى المحرّر إلى اليسار رقم الإصدار وفي الوسط اسم الملفّ المفتوح أو صوان Buffer جديد (تخزين مؤقّت) إن نُفِّذ الأمر دون تمرير معطى. ثم تأتي منطقة تحرير النّص (بيضاء في الصّورة) وفي الأسفل أدوات للتحكّم. تظهر أدوات التحكّم على هيئة حرف تسبقه علامة ^
التي تشير إلى زرّ Ctrl
في لوحة المفاتيح؛ أي أنه يجب الضّغط على زرّ Ctrl
والحرف المشار إليه من أجل استعمال أداة التحكّم.
أهم أدوات التحكم هي التالية:
-
Ctrl+G
: تظهر صفحة المساعدة. -
Ctrl+X
: تخرُج من المحرّر. -
Ctrl+O
: تخزّن محتوى الملفّ. -
Ctrl+J
: تسويّة محاذاة النّص. -
Ctrl+R
: إدراج محتوى ملفّ بذكر مساره الكامل (المُطلَق) في الملفّ الحالي. -
Ctrl+W
: البحث داخل الملفّ. -
Ctrl + K
: يقصّ السطر الحالي. -
Ctrl + U
: يُلصق المحتوى المقصوص. -
Ctrl + C
: يُظهر وضعيّة المؤشر (السطر والعمود). إن طلبت من المحرّر عملية مثل الحفظ وأردت إلغاءها يمكن أيضا استخدام هذا الاختصار. -
يُستخدم الاختصاران
Ctrl+F
وCtrl+B
على التوالي لتقديم المؤشّر أو إرجاعه بحرف. -
يُستخدم الاختصاران
Ctrl+P
وCtrl+N
على التوالي للانتقال إلى الأعلى أو الأسفل؛ سطرا في كل مرة. -
يُستخدم الاختصاران
Ctrl+space
وAlt+space
على التوالي لتقديم المؤشّر أو إرجاعه بكلمة. -
Ctrl + _
: الانتقال إلى سطر وعمود تحدّدهما بالصّيغةX,Y
حيثX
رقم السّطر وY
رقم العمود.
استخدام Vim لتحرير الملفات النصية
محرّر Vim هو نسخة محسَّنة من محرّر Vi؛ وهو محرّر نصوص مشهور الأنظمة الشبيهة بيونكس. يتميّز محرّر Vim بعمله حسب أوضاع Modes مختلفة:
-
وضع الأوامر: يُستخدَم لتصفّح الملف وتنفيذ أوامر عليه. تتكوّن الأوامر من حرف أو أكثر وهي حسّاسة لحالة الأحرف Case-sensitive. إن أردت إعادة تنفيذ أحد الأوامر عدّة مرات فيمكنك كتابة عدد المرات قبله (توجد بضعة استثناءات لهذه القاعدة). مثلا؛ ينسخ الأمرُ
yy
(أوY
) كامل السّطر الحالي وعند كتابة العدد4
أمامه كالتالي4yy
(أو4Y
) فإنه ينسخ السّطر الحالي إضافة للأسطر الثلاثة الموالية (4 أسطر في المجموع). -
وضع
ex
: يمكن في هذا الوضع تطبيق أوامر محرّرex
(محرّر نصوص يعمل على أنظمة يونكس) لتنفيذ عمليّات مثل حفظ الملفّ الحالي أو تنفيذ برنامج أو أمر خارجي. اضغط على زرExc
ثم أدخل نقطتين عموديّتيْن:
إن أردت الوصول إلى وضعex
من وضع الأوامر؛ ثم اكتب بعدهما أمرex
الذي تودّ تنفيذه. -
وضع الإدخال : يُستخدم زر
i
للانتقال من وضع الأوامر إلى وضع الإدخال (كتابة نصّ). ينتج عن الضّغط على أزرار في لوحة المفاتيح أثناء وضع الإدخال ظهور النّص في المحرّر. -
تمكن دائما العودة إلى وضع الأوامر، مهما كان الوضع الذي توجد فيه، بالضّغط على زرّ
Esc
.
نشغّل محرّر النصوص Vim بتنفيذ الأمر vim
في سطر الأوامر. يكون المحرّر عند بدء تشغيله على وضع الأوامر.
ننفّذ الأمر help:
للحصول على المساعدة (لا تنس الضغط على زر Enter
بعد كتابة الأمر ليُنفَّذ). يبدو المحرّر كالتالي بعد تنفيذ الأمر السابق.
تُقدّم صفحة المساعدة في الأعلى فهرسا بمحتوياتها على هيئة مقاطع مخصّصة حسب المواضيع. انتقل إلى الموضوع الذي ترغب في عرض معلومات عنه باستخدام الأسهم على لوحة المفاتيح ثم عند الوصول إلى اسم الموضوع في الفهرس اضغط على الزّريْن [+Ctrl
لعرض محتويات المقطع المخصَّص للموضوع. يظهر في أسفل الشاشة اسم الملفّ الحالي.
-
إن أردت إغلاق الملف دون حفظ التعديلات نفّذ الأمر التالي:
:q!
يُستخدَم نفس الأمر أيضا للخروج من صفحة المساعدة.
-
استخدم أحد الأوامر التاليّة لحفظ التعديلات على ملفّ:
:wq! :x! ZZ
لاحظ ألا وجود للنقطتيْن في الأمر الأخير (
ZZ
). -
استخدم الأمر
Ndd
أثناء وضع الأوامر لقصّ عددN
من الأسطر، ابتداءً من السّطر الحالي. -
استخدم الأمر
Myy
أثناء وضع الأوامر لنسخ عددM
من الأسطر، ابتداءً من السّطر الحالي. -
استخدم الأمر
p
للصق الأسطُر التي نسختها أو قصصتها سابقا. -
يُستخدَم الأمر
r:
إن أردت إدراج محتوى ملف في الملفّ الحالي. إن أردنا مثلا إدراج محتوى الملفetc/fstab/
في الملف الحالي ننفّذ الأمر كالتالي::r /etc/fstab
يمكن أيضا إدراج نتيجة تنفيذ أمر من أوامر النّظام كالتالي:
:r! command
مثلا؛ لإضافة التاريخ والوقت في مكان المؤشّر نكتب:
:r! date
- تابع درس أساسيّات Vim للمزيد حول الموضوع.
استخدام أمر grep والتعابير النمطية Regular expressions
يعد البحث في الملفات النصيّة من الأمور الاعتياديّة لأي مدير أنظمة. يكثُر استخدام أمر grep
مع التعابير النمطيّة لهذا الغرض.
التعابير النمطيّة (تُعرَف بـ regex
أو regexp
) هي طريقة للتعرّف على سلسلة محارف تتبع نمطا (صيغة أو هيئة) تُحدَّد بعبارة. سنعرض في ما يلي لأمثلة قاعديّة في التعامل مع التعابير النمطيّة؛ راجع مقال مقدمة في التعابير النمطية لتفاصيل أكثر.
-
نفرض مثلا أنك تريد التأكد من دعم معالجك للحوسبة الافتراضيّة Virtualization. يعني وجود سلسلة المحارف
svm
أوvmx
في الملفّproc/cpuinfo/
أن المعالج يدعم التقنيّة المذكورة. نستخدم أمرgrep
كما يلي للبحث في الملف:$ grep -i 'svm\|vmx' /proc/cpuinfo
تُستخدم العصى العموديّة
|
(تشير إلى العامل أو Or) للبحث عن توجد إحدى العبارتينsvm
أوvmx
. يجب تخليص Escape العامل بـ\
وإلا فإن أمرgrep
سيتعامل معه كمحرف عادي لا دلالة له وليس بوصفه عاملا. يطلُب الخيارi-
من الأمر ألا يعتدّ بحالة الأحرف (كبيرة أو صغيرة).
يمكن باستخدام الخيّار E-
تجاوز الحاجة لتخليص العوامل؛ ما يجعل الأمر يفسّرها مباشرة؛ يُكتَب الأمر السابق مثلا:
$ grep -Ei 'svm|vmx' /proc/cpuinfo
-
يمكن أن يكون التعبير النمطي عبارة عن مجال من خيارات توضَع بين معكوفين مربعين
[]
.
يُقرأ التعبير النمطي c[aeiou]t
مثلا: حرف c
، يتبعه واحد من الأحرف التالية aeiou
ثم حرف t
. تُطابق الكلمات التاليّة هذا التعبير النمطي: cat
، cet
، cot
، cit
وcut
. يمكن أيضا وضع مجال من الأحرف أو الأرقام بين المعكوفين؛ على سبيل المثال [a-z]
و[0-9]
يوافقان على التوالي أي حرف أبجدية لاتيني صغير Lowercase والأرقام من 0
إلى 9
. إن أردنا الإشارة إلى أن الحرف يمكن أن يتكرّر نضع عدد مرات التكرار بين معكوفين {X}
بعد العبارة.
يستخرج الأمر التالي معرّف جهاز التخزين من الملفّ etc/fstab/
:
$ grep -Ei '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' -o /etc/fstab
نأخذ الجزء الأول من العبارة:
[0-9a-f]{8}-
بمكن فهم الجزء كالتالي: لدينا ثماني خانات تتبعها خانة تاسعة توجد بها عارضة -
. بالنسبة للخانات الثمانيّة فقيمة كل واحدة يمكن أن تكون إما رقما من بين الأرقام 0
إلى9
أو حرفا من بين الأحرف a
إلى f
.
ينطبق نفس المبدأ على بقيّة أجزاء العبارة. يشير العدد بين معكوفين بعد الأقواس إلى أن عدد مرات تكرار الجزء الموجود بينها.
في المحصّلة: يمكن تقسيم العبارة إلى ثلاثة أجزاء:
[0-9a-f]{8}- ([0-9a-f]{4}-){3} [0-9a-f]{12}
يتشابه الجزء الأول والأخير (الثالث) مع فرق ألا وجود لعارضة في الجزء الأخير وكونه مكونا من 12
محرفا؛ بدلا من 8
قبل العارضة في الجزء الأول. أما الجزء الثاني فهو مكوّن من ثلاثة أجزاء؛ وتمكن إعادة كتابته كالتالي:
[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-
يطلُب الخيار o-
من الأمر طباعة جزء الملف المطابق للعبارة دون غيره.
الأنماط المعرَّفة مسبقا
توجد تعابير نمطيّة معرّفة مسبقا؛ وفي ما يلي أهمها:
النمط | المعنى |
---|---|
[[:alnum:]]
|
جميع الحروف اللاتينية (الصغيرة والكبيرة) إضافة للأرقام من 0 إلى 9 |
[[:alpha:]]
|
أي حرف لاتيني، صغيرا كان أم كبيرا |
[[:blank:]]
|
مسافة أو علامة الجدولة Tabulation |
[[:digit:]]
|
أي رقم من 0 إلى 9 |
[[:lower:]]
|
أي حرف لاتيني صغير |
[[:space:]]
|
مساحة |
[[:punct:]]
|
علامات التنقيط |
[[:upper:]]
|
أي حرف لاتيني كبير |
[:word:]
|
جميع الأحرف اللاتينية، الأرقام من 0 إلى 9 أو عارضة سفليّة _ Underscore
|
يطبع الأمر التالي جميع أسطر الملفّ etc/passwd/
التي تحوي سلسلة من أربعة أرقام:
$ grep -Ei [[:digit:]]{4} /etc/passwd
ترجمة -وبتصرّف- للمقال RHCSA Series: Editing Text Files with Nano and Vim / Analyzing text with grep and regexps – Part 4 لصاحبه Gabriel Cánepa.
تم التعديل في بواسطة محمد أحمد العيل
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.