مرجع
آخر الزيارات

كوم (يونكس)

528 كلمة•0 مشاهدة•🗒️ منذ 8 أيام
باختصار: أمر كوم في عائلة يونكس Unix لأنظمة تشغيل أجهزة الكمبيوتر يستعمل للمقارنة بين ملفين للخطوط الشائعة والخطوط المميزة. تتناول المقالة 6 أقسام، منها «الاستخدام»، «zucchini» و«الحدود».
المحتويات
  1. الاستخدام
  2. zucchini
  3. الحدود
  4. رمز الرجوع
  5. المقارنة مع diff
  6. خيارات أخرى
كوم (يونكس)

تعريفًا بالموضوع، أمر كوم في عائلة يونكس Unix لأنظمة تشغيل أجهزة الكمبيوتر يستعمل للمقارنة بين ملفين للخطوط الشائعة والخطوط المميزة. ويختص أمر comm. بمعايير POSIX وقد كان شائع للغاية في أنظمة التشغيل الشبيهة بيونيكس منذ منتصف الثمانينات حتى نهايتها. ونتناول فيما يلي مزيدًا من التفاصيل.

الاستخدام

علاوةً على ذلك، بالنسبة للكفاءة، فإن التنفيذ القياسي لأمر comm. يتوقع أن يتم تسلسل الملفين بنفس ترتيب الخطوط بحيث يتم تصنيفها من ناحية المفردات. يمكن استخدام أمر فرز لهذا الغرض.

إضافةً إلى ذلك، يقوم أمر comm. بقراءة ملفين كمدخلات ويعتبرهما خطوط نصية. يقوم comm. بإخراج ملف واحد يحتوي على ثلاث أعمدة. العمودين الأولين يتضمنان خطوطا مختلفة عن تلك الموجودة بالملفين الأول والثاني على التوالي. أما العمود الأخير فيتضمن خطوطا شائعة في كلا الملفين. وبذلك تتشابه مع diff من الناحية الوظيفية.

إضافةً إلى ذلك، يستعين لوغاريثم comm. بالتسلسل النظامي للموقع الحالي. إذا لم تكن الخطوط الموجودة بالملفات ذات تسلسل يتطابق مع الموقع الحالي، تكون النتيجة غير محددة.

ومن ناحية أخرى، يتم التفرقة بين الأعمدة عبر زر tab. فإذا ما كانت الملفات المدخلة تتضمن خطوطا تبدأ بحرف وظيفته الفصل، يمكن أن تصبح النتيجة غامضة.

zucchini

  • \t \t a p p l e \n
  • \t \t b a n a n a \n
  • \t b a n a n a \n
  • e g g p l a n t \n
  • \t z u c c h i n i \n

وفي هذا الصدد، يوضح هذا العرض أن كلا الملفين يحتويان على كلمة banana ولكن فقط ملف bar يحتوي على كلمتين banana. لمزيد من التوضيح، فإن الملف الناتج يبدو بالشكل التالي. لاحظ أن العمود يتم تفسيره بعدد أحرف tab «التبويب» الأساسية، ف /t تمثل حرف تبويب و/n تمثل خط جديد (تدوين لغة سي). المسافات الموضحة ليست جزءا من الملف الناتج.

الحدود

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

أوامر يونكس

وعلى صعيد آخر، بعض التطبيقات تقرأ الأسطر بوظيفة readlinebuffer والذي لا يفرض أي حد معين لطول السطر إذا ما كانت ذاكرة النظام كافية.

انظر كذلك

وفي هذا السياق، بعض التطبيقات الأخرى تقرأ الأسطر بوظيفة fgets . وهذه الوظيفة تتطلب فواصل ثابتة. في هذه التطبيقات يكون قياس هذا الفاصل تابع ل POSIX macro LINE_MAX.

رمز الرجوع

  • مثال
  • ملفfoo
  • apple
  • banana
  • eggplant
  • ملفbar
  • apple
  • banana
  • banana
  • zucchini
  • comm foo bar
  • apple
  • banana
  • banana
  • eggplant

ومن جهة أخرى، على عكس أمر ديف، فإن رمز الرجوع من أمر comm. ليس لها أي دلالة منطقية تتعلق بالعلاقة بين الملفين. فرمز الرجوع صفر يشير إلى النجاح، أما رمز الرجوع الأقل من صفر يشير إلى حدوث خطأ أثناء المعالجة.

المقارنة مع diff

وفي هذا الصدد، أما الفارق الثانوي بين comm. و diff هي أن أمر comm. لا يحاول الإشارة إلى أن السطر بين الملفين «قد تغير»، فالأسطر إما تظهر بشكل أعمدة «من الملف رقم 1» أو «من الملف رقم 2» أو «في كليهما»، ويمكن أن يكون هذا مفيدا إذا ما رغب الشخص في أن يتم اعتبار كلا السطرين مختلفين حتى ولو كانت الفوارق بينهما طفيفة

من جهة ثانية، بالمعنى المتداول نجد أن أمر diff ذو استخدام أكثر قوة وشيوعا من الأمر comm.. بينما الأمر comm. الأبسط يتنسب مع الاستخدام في المخطوطات المطبعية.

من جهة ثانية، الفارق الأساسي بين comm. و diff هي أن comm. يطرح جانبا المعلومات الخاصة بتسلسل السطور قبل تصنيفها.

خيارات أخرى

وفي هذا الصدد، يتمتع الأمر comm. بخيارات سطر الأمر command-line options التي تخفي أي من الأعمدة الثلاثة، وهذا الأمر مفيد في الطباعة. كما يوجد كذلك خار قراءة أحد الملفات (ولكن ليس كلاهما معا) من مدخل قياسي.

ما رأيك في هذه المقالة؟

📝 هل في هذه المقالة خطأ؟

إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.