ذكري المظهر

قيادة الفرق في لينكس

Linux Tutorial for Beginners: Introduction to Linux Operating System

Linux Tutorial for Beginners: Introduction to Linux Operating System

جدول المحتويات:

Anonim

diff هي أداة مساعدة لسطر الأوامر تتيح لك مقارنة ملفين بسطر. ويمكن أيضا مقارنة محتويات الدلائل.

يتم استخدام الأمر diff بشكل شائع لإنشاء تصحيح يحتوي على الاختلافات بين ملف واحد أو أكثر يمكن تطبيقه باستخدام أمر patch .

كيفية استخدام diff القيادة

يكون بناء جملة الأمر diff كما يلي:

diff… FILES

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

لحفظ مخرجات الأمر في ملف ، استخدم عامل إعادة التوجيه:

diff file1 file2 > patch

، سنستخدم الملفين التاليين لشرح كيفية عمل الأمر diff :

FILE1

Ubuntu Arch Linux Debian CentOS Fedora FILE2

Kubuntu Ubuntu Debian Arch Linux Centos Fedora

تنسيق عادي

في أبسط أشكاله عندما يتم تشغيل الأمر diff على ملفين نصيين دون أي خيار ، فإنه ينتج إخراج بالتنسيق العادي:

diff file1 file2

سيظهر الإخراج بشيء من هذا القبيل:

0a1 > Kubuntu 2d2 < Arch Linux 4c4, 5 < CentOS --- > Arch Linux > Centos

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

change-command < from-file-line… --- > to-file-line…

0a1 ، 2d2 و 4 2d2 ، 4c4, 5 هي أوامر التغيير. يحتوي كل أمر تغيير على ما يلي ، من اليسار إلى اليمين:

  • رقم السطر أو نطاق الأسطر في الملف الأول. حرف تغيير خاص. رقم السطر أو نطاق الأسطر في الملف الثاني.

يمكن أن يكون حرف التغيير أحد الإجراءات التالية:

  • a - أضف السطور. c - تغيير الخطوط. d - حذف الخطوط.

يتبع أمر التغيير الأسطر الكاملة التي تمت إزالتها ( < ) وإضافتها إلى الملف ( > ).

دعونا شرح الإخراج:

  • 0a1 - إضافة السطر 1 من الملف الثاني في بداية file1 (بعد السطر 0 ).
    • > Kubuntu - السطر من السطر الثاني الذي يتم إضافته إلى الملف الأول كما هو موضح أعلاه.
    2d2 - حذف السطر 2 في الملف الأول. يعني الرمز 2 بعد الرمز d أنه إذا لم يتم حذف السطر ، فسيظهر على السطر 2 في الملف الثاني.
    • < Arch Linux - الخط المحذوف.
    4c4, 5 - استبدال (تغيير) السطر 5 في الملف الأول مع الأسطر 4-5 من الملف الثاني.
    • < CentOS - السطر في الملف الأول المراد استبداله. --- - فاصل. > Arch Linux و > Centos - خطوط من الملف الثاني تحل محل السطر في الملف الأول.

تنسيق السياق

عند استخدام تنسيق إخراج السياق ، يعرض الأمر diff عدة أسطر من السياق حول الخطوط التي تختلف بين الملفات.

يخبر الخيار -c diff بإنتاج الإخراج بتنسيق السياق:

diff -c file1 file2

*** file1 2019-11-25 21:00:26.422426523 +0100 --- file2 2019-11-25 21:00:36.342231668 +0100 *************** *** 1, 6 **** Ubuntu - Arch Linux Debian ! CentOS Fedora --- 1, 7 ---- + Kubuntu Ubuntu Debian ! Arch Linux ! Centos Fedora

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

*************** *** from-file-line-numbers **** from-file-line… --- to-file-line-numbers ---- to-file-line…

  • from-file-line-numbers to-file-line-numbers الأسطر أو نطاق الخطوط المفصولة بفواصل في الملف الأول والثاني ، على التوالي. from-file-line ومن to-file-line - الخطوط التي تختلف وخطوط السياق:
    • الأسطر التي تبدأ بمسافة اثنين هي خطوط السياق ، والخطوط المتشابهة في كلا الملفين. الأسطر التي تبدأ برمز ناقص ( - ) هي الخطوط التي لا تتوافق مع أي شيء في الملف الثاني. الأسطر المفقودة في الملف الثاني. الأسطر التي تبدأ برمز الجمع ( + ) هي الخطوط التي تتوافق مع أي شيء في الملف الأول. الأسطر المفقودة في الملف الأول. الأسطر التي تبدأ بعلامة التعجب ( ! ) هي الأسطر التي يتم تغييرها بين ملفين. كل مجموعة من الخطوط تبدأ ب ! من الملف الأول لديه تطابق المقابلة في الملف الثاني.

دعنا نوضح أهم أجزاء الإخراج:

  • في هذا المثال ، لدينا قسم واحد فقط يصف الاختلافات. *** 1, 6 **** و --- 1, 7 ---- يخبرنا عن نطاق الأسطر من الملفات الأولى والثانية المضمنة في هذا القسم. خطوط Ubuntu و Debian و Fedora و آخر سطر فارغ هو نفسه في كلا الملفين. تبدأ هذه الأسطر بمساحة مزدوجة. لا يتوافق - Arch Linux من الملف الأول مع أي شيء في الملف الثاني. على الرغم من وجود هذا السطر أيضًا في الملف الثاني ، إلا أن المواضع مختلفة. لا يتوافق سطر + Kubuntu من الملف الثاني مع أي شيء في الملف الأول. سطر ! CentOS ! CentOS من الملف الأول والخطوط ! Arch Linux ! Arch Linux و ! CentOS يتم تغيير ! CentOS من الملف الثاني بين الملفات.

افتراضيًا ، يكون عدد أسطر السياق افتراضيًا إلى ثلاثة. لتحديد رقم آخر ، استخدم الخيار -C (- --contexts ):

diff -C 1 file1 file2

*** file1 2019-11-25 21:00:26.422426523 +0100 --- file2 2019-11-25 21:00:36.342231668 +0100 *************** *** 1, 5 **** Ubuntu - Arch Linux Debian ! CentOS Fedora --- 1, 6 ---- + Kubuntu Ubuntu Debian ! Arch Linux ! Centos Fedora

تنسيق موحد

تنسيق الإخراج الموحد هو نسخة محسنة من تنسيق السياق وينتج مخرجات أصغر.

استخدم الخيار -u diff لطباعة الإخراج بالتنسيق الموحد:

diff -u file1 file2

--- file1 2019-11-25 21:00:26.422426523 +0100 +++ file2 2019-11-25 21:00:36.342231668 +0100 @@ -1, 6 +1, 7 @@ +Kubuntu Ubuntu -Arch Linux Debian -CentOS +Arch Linux +Centos Fedora

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

*************** @@ from-file-line-numbers to-file-line-numbers @@ line-from-files…

  • @@ from-file-line-numbers to-file-line-numbers @@ of @@ from-file-line-numbers to-file-line-numbers @@ رقم السطر أو نطاق الأسطر من الملفين الأول والثاني المتضمنين في هذا القسم. line-from-files - الخطوط التي تختلف وخطوط السياق:
    • الأسطر التي تبدأ بمسافة اثنين هي خطوط للسياق ، والخطوط المتشابهة في كلا الملفين. الأسطر التي تبدأ برمز ناقص ( - ) هي السطور التي تمت إزالتها من الملف الأول. الأسطر التي تبدأ برمز الإضافة ( + ) هي الخطوط التي تمت إضافتها من الملف الأول.

تجاهل القضية

كما قد تلاحظ في الأمثلة أعلاه ، يكون الأمر diff حساسًا لحالة الأحرف افتراضيًا.

استخدم الخيار -i لإخبار diff لتجاهل الحالة:

diff -ui file1 file2

--- file1 2019-11-25 21:00:26.422426523 +0100 +++ file2 2019-11-25 21:00:36.342231668 +0100 @@ -1, 6 +1, 7 @@ +Kubuntu Ubuntu -Arch Linux Debian +Arch Linux CentOS Fedora

استنتاج

تعد مقارنة الملفات النصية للاختلافات إحدى المهام الأكثر شيوعًا لمسؤولي أنظمة Linux.

يقارن الأمر diff الملفات بسطر. لمزيد من المعلومات ، اكتب man diff في محطة الخاص بك.

محطة فرق