كيفية تطبيق تصحيح على ملف (وإنشاء تصحيحات) في Linux

يتيح لك أمر Linux patch نقل التغييرات من مجموعة واحدة من الملفات إلى مجموعة أخرى من الملفات بسرعة وأمان. تعلم كيفية استخدام التصحيح بالطريقة البسيطة.

أوامر التصحيح والفرق

تخيل أن لديك ملفًا نصيًا على جهاز الكمبيوتر الخاص بك. تتلقى نسخة معدلة من هذا الملف النصي من شخص آخر. كيف تنقل جميع التغييرات بسرعة من الملف المعدل إلى ملفك الأصلي؟ هذا هو المكان الذي يلعب فيه التصحيح والفرق. التصحيح والفرق موجودان في Linux وأنظمة تشغيل أخرى شبيهة بـ Unix ، مثل macOS.

يفحص الأمر فرق نسختين مختلفتين من الملف ويسرد الاختلافات بينهما. يمكن تخزين الاختلافات في ملف يسمى ملف التصحيح.

يمكن لأمر التصحيح قراءة ملف التصحيح واستخدام المحتويات كمجموعة من الإرشادات. باتباع هذه التعليمات ، فإن التغييرات في الملف المعدل هي منسوخة في الأصل ملف.

تخيل الآن أن هذه العملية تحدث لدليل كامل من الملفات النصية. الكل دفعة واحدة. هذه هي قوة التصحيح.

في بعض الأحيان لا يتم إرسال الملفات المعدلة إليك. كل ما يتم إرساله هو ملف التصحيح. لماذا ترسل عشرات الملفات بشكل دائري بينما يمكنك إرسال ملف واحد أو نشر ملف واحد للتنزيل بسهولة؟

ماذا تفعل بملف التصحيح لتصحيح ملفاتك بالفعل؟ بصرف النظر عن كونه مجرد لسان ، فهذا أيضًا سؤال جيد. سنرشدك خلال هذا المقال.

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

سيناريو المثال لدينا

في هذا السيناريو ، نحن في دليل يسمى work والذي يحتوي على دليلين آخرين. أحدهما يسمى العمل ، والآخر يسمى الأحدث. يحتوي دليل العمل على مجموعة من ملفات التعليمات البرمجية المصدر. يحتوي أحدث دليل على أحدث إصدار من ملفات التعليمات البرمجية المصدر ، والتي تم تعديل بعضها.

  كيفية تحسين اللعب باستخدام النبيذ على نظام Linux

لكي تكون بأمان ، فإن دليل العمل هو نسخة من الإصدار الحالي من الملفات النصية. إنها ليست النسخة الوحيدة منهم.

البحث عن الاختلافات بين نسختين من الملف

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

ملف واحد يسمى slang.c. سنقارن الإصدار الموجود في دليل العمل بالإصدار الموجود في أحدث دليل.

يخبر الخيار -u (موحد) الفرق أن يسرد أيضًا بعض سطور النص غير المعدلة من قبل وبعد كل قسم من الأقسام التي تم تغييرها. تسمى هذه الخطوط بخطوط السياق. فهي تساعد أمر التصحيح في تحديد مكان التغيير بدقة في الملف الأصلي.

نحن نقدم أسماء الملفات حتى يعرف الفرق الملفات التي يجب مقارنتها. يتم إدراج الملف الأصلي أولاً ، ثم الملف المعدل. هذا هو الأمر الذي نصدره إلى الفرق:

diff -u working/slang.c latest/slang.c

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

صنع ملف التصحيح

لالتقاط هذه الاختلافات في ملف التصحيح ، استخدم الأمر التالي. إنه نفس الأمر على النحو الوارد أعلاه ، مع إعادة توجيه الإخراج من diff إلى ملف يسمى slang.patch.

diff -u working/slang.c latest/slang.c > slang.patch

diff -u working / slang.c latest / slang.c> slang.patch in a terminal window “width =” 646 ″ height = “57 ″ onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (هذا) ؛ ”  onerror = ”this.onerror = null؛ pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this)؛”> </p>
<p> اسم ملف التصحيح عشوائي.  يمكنك أن تسميها أي شيء تريده.  إن إعطائها امتداد “.patch” فكرة جيدة ؛  ومع ذلك ، لأنه يوضح نوع الملف. </ p> </p>
<p> لجعل التصحيح يعمل على ملف التصحيح وتعديل ملف العمل / slang.c ، استخدم الأمر التالي.  يتيح الخيار -u (موحد) أن يعرف التصحيح أن ملف التصحيح يحتوي على خطوط سياق موحدة.  بمعنى آخر ، استخدمنا الخيار -u مع الفرق ، لذلك نستخدم الخيار -u مع التصحيح. </ p> </p>
<div style=

patch -u working.slang.c -i slang.patch

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

عمل نسخة احتياطية من الملف الأصلي

يمكننا توجيه التصحيح لعمل نسخة احتياطية من الملفات المصححة قبل تغييرها باستخدام الخيار -b (النسخ الاحتياطي). يخبر الخيار -i (المدخلات) التصحيح باسم ملف التصحيح المراد استخدامه:

patch -u -b working.slang.c -i slang.patch

تم تصحيح الملف كما كان من قبل ، مع عدم وجود فرق واضح في الإخراج. ومع ذلك ، إذا نظرت إلى مجلد العمل ، فسترى أن الملف المسمى slang.c.orig قد تم إنشاؤه. تظهر طوابع التاريخ والوقت للملفات أن slang.c.orig هو الملف الأصلي وأن slang.c هو ملف جديد تم إنشاؤه بواسطة patch.

استخدام فرق مع الدلائل

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

الخيارات التي سنستخدمها مع diff هي الخيار -u (سياق موحد) الذي استخدمناه سابقًا ، والخيار -r (العودي) لجعل الاختلافات تنظر في أي مجلدات فرعية والخيار -N (ملف جديد).

يخبر الخيار -N فرقًا عن كيفية التعامل مع الملفات الموجودة في أحدث دليل غير موجود في دليل العمل. يجبر الفرق على وضع التعليمات في ملف التصحيح بحيث يقوم هذا التصحيح بإنشاء ملفات موجودة في أحدث دليل ولكنها مفقودة من دليل العمل.

يمكنك تجميع الخيارات معًا بحيث تستخدم واصلة واحدة (-).

لاحظ أننا نقدم أسماء الدلائل فقط ، ولا نطلب من الفرق النظر في ملفات معينة:

diff -ruN working/ latest/ > slang.patch

diff -ruN working / latest /> slang.patch ”width =” 646 ″ height = ”77 ″ onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (هذا) ؛ ”  onerror = ”this.onerror = null؛ pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this)؛”> </p>
<h2 role =نظرة خاطفة داخل ملف التصحيح

دعونا نلقي نظرة سريعة على ملف التصحيح. سنستخدم أقل للنظر في محتوياته.

يظهر الجزء العلوي من الملف الاختلافات بين نسختين من slang.c.

  كيفية تثبيت KDE Connect على Linux للوصول إلى الملفات والإشعارات على Andriod

بالتمرير لأسفل خلال ملف التصحيح ، نرى أنه يصف التغييرات في ملف آخر يسمى Structs.h. يتحقق هذا من أن ملف التصحيح يحتوي بالتأكيد على الاختلافات بين الإصدارات المختلفة لملفات متعددة.

فكر قبل أن تثب

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

يقوم الخيار –dry-run بإخبار التصحيح بفعل كل شيء بصرف النظر عن تعديل الملفات فعليًا. سيقوم التصحيح بإجراء جميع فحوصات ما قبل الرحلة على الملفات وإذا واجه أي مشاكل ، فإنه يقوم بالإبلاغ عنها. في كلتا الحالتين ، لا يتم تعديل أي ملفات.

إذا لم يتم الإبلاغ عن أي مشاكل ، فيمكننا تكرار الأمر بدون خيار التشغيل الجاف وتصحيح ملفاتنا بثقة.

يقوم الخيار -d (الدليل) بإخبار التصحيح بالدليل الذي يجب العمل عليه.

لاحظ أننا لا نستخدم الخيار -i (الإدخال) لإخبار التصحيح بملف التصحيح الذي يحتوي على الإرشادات من الفرق. بدلاً من ذلك ، نقوم بإعادة توجيه ملف التصحيح إلى ملف التصحيح <. wp_automatic_readability="17.5">

patch --dry-run -ruN -d working 

Out of the entire directory, diff found two files to patch. The instructions regarding the modifications for those two files have been checked by patch , and no problems have been reported.

Pre-flight checks are OK; we’re ready for take-off.

Patching a Directory

To genuinely apply the patches to the files we use the previous command without the --dry-run option.

patch -ruN -d working 

This time each line of output doesn’t start with “checking,” each line starts with “patching.”

And no problems are reported. We can compile our source code, and we’ll be on the latest version of the software.

Settle Your Differences

This is by far the easiest and safest way to use patch. Copy your target files to a folder and patch that folder. Copy them back when you’re happy that the patching process completed error free.