# إد (محرر نصوص)

إد (بالإنجليزية: ed)‏ محرر نصوص سطري مخصص للعمل على أنظمة يونكس، يعتبر إد واحداً من أوئل البرامج المخصصة لمستخدمي أنظمة الحاسوب على منصات يونكس ويعتبر إد أحد أهم البرامج المعيارية على أنظمة يونكس منذ إطلاق النسخة الأولى منها ، كتبت النسخة الأصلية لإد باستخدام مجمـِّع لغة الآلة PDP-11/20 وكان ذلك في عام 1971 على يد كين ثومبسون.

## التاريخ والتأثير

العديد من الوظائف والميزات في إد تم جلبها من محرر النصوص كيو إد الذي تمت كتابته في جامعة كاليفورنيا، بركلي، كان لدى ثومبسون معرفة كبيرة في كيو إد وكان قد قام بإعادة كتابته وتوظيفيه للعمل على أنظمة سي تي أس أس ومولتكس وكانت النسخة التي قام ثومبسون بإعادة كتابتها هي أول نسخة من كيو إد تدعم التعابير النمطية وعلى الرغم من كون التعابير النمطية جزء من إد إلا أن تطبيقها في إد يعتبر أقل عمومية من نظيراتها في كيو إد.
قامت الجوانب الوظيفية في إد بالتأثير على وظائف المحرر إكس والذي قام بدوره بالتأثير على محرر النصوص الشهير في آي ومن المعلوم أيضاً أن الأمر "grep" المعروف في عالم يونكس كان قد استلهم من استخدامات خاصة في كيو إد ولاحقاً من إد حيث أنه وبشكل عام تمثل حروف اسم الأمر "grep" عملية البحث في النصوص على أجزاء تمثل نمط تعبيري معين ومن ثم طباعة السطور التي تحوي التعبير المراد إيجاده
و من الجدير ذكره أيضاً هو قيام محرر النصوص سيد بتطبيق العديد من الوظائف الموجودة في كيو إد والتي لم يتم تطبيقها في إد على أنظمة يونكس وعليه كان لسيد دور كبير في تصميم لغة البرمجة المعروفة «أوك» والتي بدورها أثرت وبشكل كبير على لغة البرمجة المعروفة بيرل.

## الميزات

ميزات إد تتضمن:
* وجوده وبشكل رئيسي على جميع أنظمة يونكس (و بشكل إلزامي في الأنظمة التي تطبق مواصفات يونكس المنفردة).
* محرر متعدد الوسائط فهو يدعم نمط واجهة سطر الأوامر والنمط النصي بالإضافة إلى نمط الإظهار.
* دعم التعابير النمطية.
* دعم قوي للتشغيل الآلي «الأوتوماتيكي» عن طريق أوامر التغذية من قنوات الأدخال المعيارية (Standard Input).
و يشتهر إد باختصاراته في التعامل مع المستخدمين حيث أنه تقريبأ لا يقوم باعطاء نتائج مرئية للوظائف التي يقوم بتنفيذها أو رسائل الأخطاء، على سبيل المثال فإن الرسالة التي يقوم إد بإظهارها في حالة حدوث خطأ معين أثناء تنفيذ أمر هي طباعة الإشارة "?" وكذلك الأمر في حالة التأكد من قيام المستخدم بإنهاء عملية التحرير. و من المعلوم أن إد لا يدعم بشكل تلقائي إظهار اسم الملف المحرر أو سطر النص أو حتى أظهار نتائج التغيير على النصوص إلا في حال تم تحديد ذلك، هذه الاختصارات كانت مناسبة وفي مكانها في الانطلاقات الأولى ليونكس ويرجع السبب في ذلك إلى ضعف العتاد المرئي لأجهزة الحاسوب في ذلك الوقت حيث أنه لم يكن متطوراً كما هو عليه الآن بالإضافة إلى أن الذاكرة الرئيسية لم تكن بالحجم المتعارف عليه في الوقت الحاضر من حيث الكم الذي تستطيع تخزينه من البيانات والمعلومات، ولهذا السبب ومع تطور العتاد المرئي لأجهزة الحاسب فقد أصبحت المحررات المرئية هي المحررات المعيارية في الوقت الحاضر. تعد الاستخدامات التفاعلية لإد قليلةً في الوقت الحاضر ولكنه يستخدم في بعض البرامج النصية "Shell Scripts" ويندرج إد تحت محررات النصوص مثل في آي وإيماكس، ونظراً لتواجده في جميع أنظمة يونكس وتوزيعات لينكس يعتبر إد محرر النصوص الوحيد الذي يمكن استخدامه في هذه الأنظمة في حالة حدوث خطأ أو في حالة عدم وجود محررات نصوص أخرى في النظام مما يجعل وجوده في هذه الأنظمة ضرورياً بشكل نسبي. تم تقليد أوامر إد ومصطلحاته الوظيفية في عدد من محررات النصوص الأخرى مثل إدلين وذلك في أنظمة إم إس-دوس القديمة وفي أنظمة ويندوز إن تي العاملة على هيكلية 32 بت.

## مثال

و كمثال لاستخدام إد في تحرير النصوص نسرد المقطع التالي ونرجو الانتباه إلى أن الأوامر والنصوص التي يكتبها المستخدم تم تمييزها بالخط العادي ومخرجات إد تم تمييزها بالخط الغليظ:
النتيجة النهائية لأوامر المثال هي ملف بسيط يحوي النص التالي:
يبدأ المثال بمعالجة ملف فارغ حيث أن الأمر a يقوم بإلحاق أو إلصاق النصوص ببعضها البعض (من المفيد أن نذكر هنا أم جميع أوامر إد هي عبارة عن أحرف وحيدة فقط) كما يقوم الأمر أيضاً بوضع إد على نمط الإدخال بحيث يقوم بإدخال الحروف تباعاً ويتوقف عند طباعة النقطة على السطر "."، والسطرين اللذين تم طباعتهما قبل النقطة يتم إدخالهم المنطقة المخصصة لتحرير الملف على الذاكرة الرئيسية "File Buffer"، يقوم الأمر 2i أيضاً بإعلام إد استخدام وضع أو نمط الإدخال ومن ثم سيقوم بإدخال النص (سطر فارغ في مثالنا هذا) قبل السطر رقم 2، ومن الجدير ذكره أنه بالإمكان سبق الأمر برقم لمعالجة السطر الذي يمثل ذلك الرقم.
في السطر %l الحرف "l" (الحرف الصغير من الحرف L) يعني تنفيذ امر «السرد» (List) وتم سبق الأمر بنطاق ليتم معالجة النص ضمن هذا النطاق وفي هذه الحالة تمثل إشارة % اختصاراً للنطاق $,1 والنطاق هو الفرق بين رقمي سطرين مفصولين بفاصلة أنجليزية "," وإشارة "$" تعني الرمز لآخر سطر في الملف، وبناءً عليه فإن إد سيقوم بسرد أو إظهار جميع السطور من أول سطر إلى اَخر سطر (و يمكن تجريب ذلك بتبديل الرقم 1 برقم آخر ويمكنك أيضاً تبديل "$" برقم آخر).
و عند إدخال السطر الفارغ في السطر رقم 2 فإن السطر المكتوب فيه «هذا السطر رقم اثنان» سيصبح في السطر الثالث وتم تبديل كلمة «اثنان» بكلمة «ثلاثة» في المثال للدلالة على ذلك ويظهر ذلك جلياً في الأمر /ثلاثة/اثنان/3s وهو أمر يفيد تبديل الكلمات حيث يتم تفسيره كالاَتي:
* يقسم الأمر إلى ثلاثة أقسام وهي (3s، اثنان، وثلاثة) بالترتيب.
* القسم الأول يفيد تحديد رقم السطر المراد معالجته وتحديد عملية الاستبدال (3s).
* القسم الثاني يحوي الكلمة المراد استبدالها (في مثالنا الكلمة المراد استبالها هي «اثنان»).
* القسم الثالث يحوي الكلمة المراد الاستبدال بها (في مثالنا الكلمة المراد الاستبدال بها هي «ثلاثة»).
و يفصل بين الأمر والاَخر الفاصلة الأنجليزية "," ولذلك نرى وكجزء من الأمر "l%," ويعني ذلك أنه بعد تنفيذ أمر الاستبدال سيتم القيام بتنفيذ أمر «السرد» (List). الأمر "w text.txt" يفيد بتنفيذ عملية الحفظ وكتابة محتويات الملف تحت اسم "text.txt" ويتم تنفيذ ذلك عن طريق الأمر "w" وهو اختصار لكلمة "write" وتعني بالإنجليزية «أكتب» أو «إحفظ» وهذا الأمر يجعل إد يقوم بطباعة 54 وهذا الرقم يمثل عدد الأحرف التي تم حفظها في الملف وأخيراً يوعز الأمر "q" لإد القيام بالخروج من بيئة محرر النصوص، حيث أن حرف "q" يمثل الاختصار للكلمة الإنجليزية "quit" والتي تعني حرفياً «إنهاء».

## بيل جوي

على الرغم من كون بيل جوي هو من قام بتطوير محرر النصوص المعروف في آي لاستبداله بإد وفي مقابلة تمت له في العام 1984 حيث أفصح أنه وفي زياراته خارج مختبرات صن ميكروسيستمز إلا أنه كان يستخدم إد في تلك المواقف على الرغم من انتشار في آي في ذلك الوقت وذلك لأنه لم يكن متأكداً أن نسخة في آي المنصوبة على الجهاز الذي يستعمله ستعمل كما أراد لها أن تعمل.

## انظر أيضاً

* في آي
* إيماكس
* يونكس
* جنو/لينكس
* محرر نصوص