مقدمة حول المحرر ed - الجزء الثاني

الحمد لله و الصلاة و السلام على رسول الله و آله و أصحابه و من إتبع هداه.

#تتمة للموضوع السابق حول المحرر إد

المحرر إد يستخدم غالبا على الأجهزة التي لا تدعم طور ملئ الشاشة و أيضا يستخدم داخل قرص صغير الحجم مثل
flopy drive.
أو في حالة تعطل النظام .ولا يوجد غيره.

كما قلنا في الموضوع السابق. يتم تشغيل البرنامج بأحد هذه الطرق

ed [-] [-G] [-s] [-pprompt-string] [filename]

اللاحقة - تعني تشغيل المحرر بدون إظهار أي شيء على الشاشة.

-G
هذه اللاحقة تحعل المحرر يدعم النسخ القديمة منه.

-s

نفس لاحقة -.يعني عدم إ إظهار أي شيء على النافذة.

-p prompt-string

أو فقط

-p

خاصية تفعيل إظهار المؤشر على الشاشة.

filename

إسم ملف المشروع

** على هذا النحرر يوجد طورين

*** طور الأوامر

و

*** طور إدخال النص

هذا محرر السطر. يعني تعامل مع السطر الحالي.و كل سطر يحمل عنوان يعني رقم.

مثلا لطباعة العشر سطور الأول.نقوم بالآتي

1,10p

في طور الأوامر النقطة

.

تعني السطر الحالي.
وعلامة

$

تعني آخر سطر.ما يعني هذا الأمر سيقوم بالحذف من السطر الحالي إلى آخر سطر

.,$d

سنقوم الآن بالعمل على ملف تجريبي.لتطبيق كل ما تعلمناه و نضيف خصائص جديدة.

ed -p : test1

محتوى الملف

327
:,n
1       hello world
2       hello nation
3       hello folks
4       this a line number 1
5       hello world
6       hello nation
7       hello folks
8
9       #this a line number 2
10      this a line number 3
11      this a line number 4
12      this is another line.
13      this a line number 1
14      #this a line number 2
15      this a line number 3
16      this a line number 4
17      this is another line.
18      hope for the best
19
20      plan for the worse

الرقم ٣٢٧ يعني عدد الأحرف بالملف.

النقطتين : تساعدنا لتميز بين طور الأوامر و طور الإدخال.

الأمر

,n

لطباعة كل محتوى الملف مع ترقيم السطور.

عندما نفتح ملف للتعديل عليه.السطر الحالي هو آخر سطر.لتعرف رقم السطر الحالي. نطبق

.=
20

ما يعني الملف يحتوي على ٢٠ سطر.

لطباعة جميع السطور

1,20p
hello world
hello nation
hello folks
this a line number 1
hello world
hello nation
hello folks

#this a line number 2
this a line number 3
this a line number 4
this is another line.
this a line number 1
#this a line number 2
this a line number 3
this a line number 4
this is another line.
hope for the best

plan for the worse

للذهاب إلى سطر معين.نكتب رقم السطر

:5
hello world

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

:/folks
hello folks

هذا السطر يصبح هو السطر الحالي. لخذفه يكفي فقط تطبيق الأمر

:d
:

لإستبدال كلمة بأخرى نستخدم الأمر
s
لإستبدال كلمة folks بكلمة Fox
نذهب أولا للسطر الثالث ثم نطبق

:3
:s/folks/Fox/

لإدخال نص قبل السطر الحالي.
نطبق الأمر
i
ثم نكتب ما نريد ثم نضع نقطة للخروج من طور الإدخال.

i
this is a line above the current line
.

عندها ستظهر النقطتين
:
ما يعني أن المحرر رجع إلى طور الأوامر.

عندما تنتهي من جميع التعديلات و تريد خفظ العمل.نطبق الآتي

:wq
315

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

  • هذا مختصر لأهم الأوامر

علامة $

تعني الذهاب إلى آخر سطر في الذاكرة

ed -p : test1
315
:p
plan for the worse
:1
hello world
:$
plan for the worse
:.=
19
  • ! cmd

علامة التعجب ثم أمر . خاصية لتشغيل أوامر لينكس أو شيل سكريبت من داخل إد

:!date
Thu Apr 14 06:11:25 WET 2022

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

%p

طباعة جميع محتوى الملف.

  • علامة زائد +

الإنتقال إلى السطر القادم

:15
this a line number 4
:n
15      this a line number 4
:+
this is another line.
:n
16      this is another line.
:

+n(number)
التقدم بسطر أو أكثر

:8
#this a line number 2
:+2
this a line number 4
:n
10      this a line number 4
:
  • علامة فاصلة

  • ,

  • هي نفس علامة

  • %

  • يعني تطبيق الأمر الذي يأتي بعدها على جميع محتوى الذاكرة

  • (buffer)

  • لأن إدلايعمل على الملف الحقيقي

  • علامة ناقص أو ما يسمى هايفن

  • تعني الرجوع لسطر السابق

:n
10      this a line number 4
:+
this is another line.
:n
11      this is another line.
:-
this a line number 4
:n
10      this a line number 4
  • علامة
  • /regex/
  • أو مايسمى التعابير النمطية
  • تفيد للبحث عن كلمة للأمام و تطبع أول نتيجة مطابقة.
:,n
1       hello world
2       hello nation
3       hello folks
4       this a line number 1
5       hello world
6       hello nation
7
8       #this a line number 2
9       this a line number 3
10      this a line number 4
11      this is another line.
12      this a line number 1
13      #this a line number 2
14      this a line number 3
15      this a line number 4
16      this is another line.
17      hope for the best
18
19      plan for the worse
:1
hello world
:/folks/
hello folks
:n
3       hello folks
:
  • هذا الأمر
  • =
  • لطباعة عدد السطور بالملف
:=
19
:
  • هذه العبارة
    *?regex?
    خاصية للبحث عن كلمة في السطور السابقة. يعني البحث يكون للخلف
:n
19      plan for the worse
:?folks?
hello folks
:n
3       hello folks
:
  • أمر a

  • لإضافة محتوى بعد السطر الحالي

  • أمر c

  • لتغير سطر

  • أمر d

  • للحذف

  • e file

  • لتعديل ملف من داخل المحرر إد

  • f file

  • لتغير إسم ملف من داخل المحرر

  • أمر h
    لإظهار آخر رسالة خطأ

*أمر H
لتفعيل خاصية ظهور رسائل الأخطاء

*أمر i
لإدخال نص قبل السطر الحالي

  • تعليم سطر معين بأي حرف
    kv
    نضع الأمر
    k
    ثم حرف .بعد ذلك يمكن طباعة السطر هكذا
    'v
:n
5       hello world
:kv
:3
hello folks
:n
3       hello folks
:'v
hello world
:n
5       hello world
:

توجد مسائل أخرى لم أتطرق لها
ربما موضوع لاحق.

إعجاب واحد (1)

برأيي ادمج هذا الموضوع بالجزء الاول، فلا مانع في وجود المواضيع الطويلة.

نعم. فكرة جيدة.لا يوجد أي مشكل في ذلك.