English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

أمر patch في Linux

مجلة الأوامر في لينكس

يُستخدم الأمر patch في Linux لإصلاح الملفات.

يُمكّن الأمر patch المستخدم من تعديل وتحديث الملفات الأصلية باستخدام طريقة إعداد ملفات الرفع. إذا تم تعديل ملف واحد فقط في كل مرة، يمكن تنفيذ الأوامر بالترتيب في سطر الأوامر. إذا تم استخدامه مع ملفات الرفع، يمكن إصلاح عدد كبير من الملفات في وقت واحد، وهذا هو واحد من طرق تحديث نظام النواة في نظام Linux.

النحو

patch [-bceEflnNRstTuvZ][-B <备份字首字符串>][-d <工作目录>][-D <标示符号>][-F <监别列数>][-g <控制数值>][-i <修补文件>][-o <输出文件>][-p <剥离层级>][-r <拒绝文件>][-V <备份方式>][-Y <备份字首字符串>][-z <备份字尾字符串>][--backup-if -mismatch][--binary][--help][--nobackup-if-mismatch][--verbose][原始文件 <修补文件>] أو path [-p <剥离层级>] < [修补文件]

المعامل:

  • -b أو --backup يقوم بنسخ كل ملف أصلي.
  • -B<سلسلة بداية النسخة> أو --prefix=<سلسلة بداية النسخة> يحدد سلسلة البداية التي سيتم إضافتها إلى اسم الملف عند النسخ.
  • -c أو --context يفسر بيانات التعديل كفرق مرتبط.
  • -d<مجلد العمل> أو --directory=<مجلد العمل> يحدد مجلد العمل.
  • -D<رمز التعريف> أو --ifdef=<رمز التعريف> يحدد الرمز الذي سيتم استخدامه لتحديد الأماكن التي تم تعديلها.
  • -e أو --ed يفسر بيانات التعديل كملف نصي يمكن استخدامه مع أوامر ed.
  • -E أو --remove-empty-files إذا كان ملف الإخراج خاليًا بعد التعديل، يتم إزالته.
  • -f أو --force يؤدي نفس تأثير مع معامل "-t"، لكنه يفترض أن بيانات التعديل هي إصدار جديد.
  • -F<عدد الأعمدة> أو --fuzz<عدد الأعمدة> يحدد قيمة أقصى عدد الأعمدة للتحقق منها.
  • -g<قيمة التحكم> أو --get=<قيمة التحكم> يحدد التحكم في عملية التعديل باستخدام RSC أو SCCS.
  • -i<ملف التعديل> أو --input=<ملف التعديل> يقرأ ملف التعديل المحدد.
  • -l أو --ignore-whitespace يغض النظر عن الفواصل والفضاءات بين بيانات التعديل والبيانات المدخلة.
  • -n أو --normal يفسر بيانات التعديل كفرق عام.
  • -N أو --forward يغض النظر عن أن بيانات التعديل هي أقدم من إصدار الملف الأصلي، أو أن بيانات التعديل لهذا الإصدار قد تم استخدامها.
  • -o<ملف الإخراج> أو --output=<ملف الإخراج> يحدد اسم ملف الإخراج، يتم حفظ الملفات المعدلة تحت هذا الاسم.
  • -p<مستوى ال剥离> أو --strip=<مستوى ال剥离> يحدد عدد المستويات التي تريد剥离 من أسماء المسارات.
  • -f<ملف الرفض> أو --reject-file=<ملف الرفض> يحدد اسم ملف الحفظ لمعلومات الرفض المتعلقة بالتعديل، واسم الملف المعدل مسبقًا هو .rej.
  • -R أو --reverse يفترض أن البيانات التي يتم تعديلها ناتجة عن تبادل مواقع الملفات القديمة والجديدة.
  • -s أو --quiet أو --silent لا يظهر عملية تنفيذ الأوامر إلا في حال حدوث خطأ.
  • -t أو --batch يتحايل على الأخطاء بشكل تلقائي دون طرح أي أسئلة.
  • -T أو --set-time هذا المعامل يؤدي نفس تأثير مع معامل "-Z"، لكنه يعتمد على الوقت المحلي.
  • -u أو --unified  تحويل بيانات الإصلاح إلى فرق موحدة.
  • -v أو --version  عرض معلومات الإصدار.
  • -V<طريقة الحفظ> أو --version-control=<طريقة الحفظ>  بعد إضافة ملف الهدف بالأمر "-b"، يتم إضافة سلسلة الحفظ إلى نهاية ملف الحفظ، يمكن تغيير هذه السلسلة باستخدام الأمر "-z"، وعند تحديد طريقة مختلفة للحفظ باستخدام الأمر "-V"، يتم إنشاء سلسلة مختلفة من نهاية الحفظ.
  • -Y<سلسلة بداية الحفظ> أو --basename-prefix=--<سلسلة بداية الحفظ>  تحديد سلسلة تضاف إلى بداية اسم الملف عند حفظ الملف.
  • -z<سلسلة نهاية الحفظ> أو --suffix=<سلسلة نهاية الحفظ>  تأثير هذا المعامل مشابه لتحديد "-B"، ولكن يختلف في أن مسار العمل والاسم الملف إذا كان "src/linux/fs/super.c"، يتم نسخ ملف super.c إلى مجلد /src/linux/fs/backup.
  • -Z أو --set-utc  ضبط وقت التغيير، الحصول على الوقت UTC.
  • --backup-if-mismatch  قم بحفظ الملفات إذا لم تتطابق البيانات في الإصلاح، ولا إذا تم تحديد الملفات للحفظ.
  • --binary  قراءة وكتابة البيانات بتنسيق ثنائي، وليس عبر جهاز الإخراج القياسي.
  • --help  مساعدة عبر الإنترنت.
  • --nobackup-if-mismatch  لا تقم بحفظ الملفات إذا لم تتطابق البيانات في الإصلاح، ولا إذا تم تحديد الملفات للحفظ.
  • --verbose  يظهر تفاصيل تنفيذ الأمر.

مثال على الاستخدام

لترقية ملف "testfile1" باستخدام الأمر "patch"، ملف إصلاح الترقية هو "testfile.patch"، أدخل الأمر التالي:

$ patch -p0 testfile1 testfile.patch    # ترقية الملف باستخدام برنامج الإصلاح 

قبل استخدام هذا الأمر، يمكنك أولاً استخدام الأمر "cat" لعرض محتويات ملف "testfile1". يمكنك إنشاء ملف إصلاح باستخدام الأمر "diff" مقارنة ملفات تحتاج إلى تحديث أو ترقية. إليك كيفية القيام بذلك:

$ cat testfile1                 # عرض محتويات ملف testfile1  
مرحباً،هذا هو الملف الأول!  
$ cat testfile2                 # عرض محتويات ملف testfile2  
مرحباً،هذا هو الملف الثاني!  
$ diff testfile1 testfile2          # مقارنة ملفين  
1c1  
<مرحبًا،هذا هو الملف الأول!  
---  
>مرحبًا،هذا هو الملف الثاني!  
# يتم حفظ نتائج المقارنة في ملف tetsfile.patch  
$ diff testfile1 testfile2>testfile.patch     
$ cat testfile.patch                # النظر في محتويات حزمة التعديلات  
1c1  
<مرحبًا،هذا هو الملف الأول!  
---  
>مرحبًا،هذا هو الملف الثاني!  
# يتم تحديث ملف testfile1 باستخدام حزمة التعديلات  
$ patch -p0 testfile1 testfile.patch      
تم تعديل ملف testfile1  
$ cat testfile1                  # النظر في محتويات testfile1 مرة أخرى  
# تم تعديل ملف testfile1 لتكون محتوياته مثل testfile2  
مرحبًا، هذا هو الملف الثاني!   

ملاحظة: في الأوامر التالية، "$ diff testfile1 testfile2>testfile.patch" يعني أن العلامة النصية ">" تستخدم لتحديد أن بيانات العلامة النصية على اليسار يتم كتابتها في الملف المحدد على اليمين. هنا، يعني ذلك أن نتائج مقارنة الملفين يتم كتابتها في ملف "testfile.patch".

مجلة الأوامر في لينكس