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

Linux diff command

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

The Linux diff command is used to compare file differences.

diff by line compares the differences between text files. If a directory is specified, diff compares files with the same name in the directory, but does not compare the subdirectories.

النحو

diff [-abBcdefHilnNpPqrstTuvwy][-<عدد الأسطر>][-C <عدد الأسطر>][-D <اسم المجموعة>][-I <حرف أو نص>][-S <ملف>][-W <عرض>][-x <ملف أو دليل>][-X <ملف>][--help][--left-column][--suppress-common-line][ملف أو دليل 1][ملف أو دليل 2]

المتغيرات

  • -<عدد الأسطر>  يتم تحديد عدد الأسطر التي سيتم عرضها. يجب استخدام هذا الخيار مع -c أو -u.

  • -a أو --text  يقوم diff افتراضيًا بمقارنة ملفات النص فقط.

  • -b أو --ignore-space-change  لا يتم التحقق من الفروق في مسافات الحروف.

    • -B أو --ignore-blank-lines  لا يتم التحقق من الفروق في الأسطر الفارغة.

    • -c  يتم عرض الكل وتعليم الفروق.

    • -C<عدد الأسطر> أو --context<عدد الأسطر>  يساوي تنفيذ الأمر "-c-<عدد الأسطر>".

    • -d أو --minimal  يتم استخدام خوارزميات مختلفة للقيام بالمقارنة باستخدام وحدات أصغر.

    • -D<اسم المجموعة> أو ifdef<اسم المجموعة>  يمكن استخدام صيغة الصدور لهذا الخيار في المجموعات المسبقة المعالجة.

    • -e أو --ed  يمكن استخدام صيغة الصدور لهذا الخيار في ملف سكريبت ed.

    • -f أو --forward-ed  يكون نمط الصدور مشابهًا لملف سكريبت ed، لكن يتم عرض الفروق وفقًا لترتيب الملف الأصلي.

    • -H أو --speed-large-files  يمكن زيادة السرعة عند مقارنة ملفات كبيرة.

    • -l<حرف أو نص> أو --ignore-matching-lines<حرف أو نص>  إذا كانت هناك فروق في بعض الأسطر في كلا الملفين، وكانت هذه الأسطر تحتوي أيضًا على الحرف أو النص المحدد في الخيار، لا يتم عرض فرق هذين الملفين.

    • -i أو --ignore-case  لا يتم التحقق من الفروق في الحروف الكبيرة والصغيرة.

    • -l أو --paginate  يتم تقديم النتائج إلى برنامج pr لتصفحها.

    • -n أو --rcs  يتم عرض نتائج المقارنة بصيغة RCS.

    • -N أو --new-file  عند مقارنة الدلائل، إذا كان ملف A يظهر فقط في دليل معين، سيتم عرضه افتراضياً:

    • فقط في مجلد: إذا استخدم ملف A مفتاح -N، فإن diff سيقارن ملف A بملف فارغ.

    • -p  إذا كان ملف المقارنة ملف برمجة بلغة C، يتم عرض اسم الدالة التي تحتوي على الفرق.

    • -P أو --unidirectional-new-file  مثل -N، لكن فقط عندما يحتوي الدليل الثاني على ملف لم يحتويه الدليل الأول، يتم مقارنة هذا الملف مع ملف فارغ.

    • -q أو --brief يظهر فقط ما إذا كانت هناك اختلافات دون عرض المعلومات التفصيلية.

    • -r أو --recursive يقارن الملفات في الدلائل الفرعية.

    • -s أو --report-identical-files يظهر الرسالة حتى لو لم يتم العثور على أي اختلافات.

    • -S<ملف> أو --starting-file<ملف> يبدأ المقارنة في الملف المحدد عند مقارنة الدلائل.

    • -t أو --expand-tabs يفتح رموز tab عند عرض النتيجة.

    • -T أو --initial-tab يضيف رمز tab في بداية كل سطر لتحقيق الترتيب.

    • -u،-U<عدد الأعمدة> أو --unified=<عدد الأعمدة> يظهر الاختلافات بين محتويات الملفين بشكل مدمج.

    • -v أو --version يظهر معلومات الإصدار.

    • -w أو --ignore-all-space يُتجاهل جميع حروف الفراغ.

    • -W<عرض> أو --width<عرض> يحدد عرض الشريط عند استخدام المعلمة -y.

    • -x<اسم الملف أو الدليل> أو --exclude<اسم الملف أو الدليل> لا يقارن بالملفات أو الدلائل المحددة في الخيار.

    • -X<ملف> أو --exclude-from<ملف> يمكنك حفظ ملف أو نوع مجلد كملف نصي، ثم تحديد هذا الملف في <ملف>.

    • -y أو --side-by-side يظهر الاختلافات بين الملفين بشكل متوازي.

    • --help يظهر المساعدة.

    • --left-column في استخدام المعلمة -y، إذا كانت سطراً من الملفين متطابقة، يتم عرض المحتوى فقط في الجانب الأيسر من الشريط.

    • --suppress-common-lines في استخدام المعلمة -y، يظهر فقط الاختلافات.

    مثال1: مقارنة ملفين

    [root@localhost test3]# diff log2014.log log2013.log 
    3c3
    < 2014-03
    ---
    > 2013-03
    8c8
    < 2013-07
    ---
    > 2013-08
    11,12d10
    < 2013-11
    < 2013-12

    السطر "3c3" و "8c8" يعني أن ملف log2014.log و ملف log20143log مختلفان في السطر 3 و السطر 8 من المحتوى؛ "11,12d10" يعني أن الملف الأول يحتوي على السطور 11 و 12 أكثر من الملف الثاني.

    مثال2: عرض بجانب

    [root@localhost test3]# diff log2014.log log2013.log  -y -W 50
    2013-01                 2013-01
    2013-02                 2013-02
    2014-03                                                 | 2013-03
    2013-04                 2013-04
    2013-05                 2013-05
    2013-06                 2013-06
    2013-07                 2013-07
    2013-07               | 2013-08
    2013-09                 2013-09
    2013-10                 2013-10
    2013-11               <
    2013-12               <
    [root@localhost test3]# diff log2013.log log2014.log  -y -W 50
    2013-01                 2013-01
    2013-02                 2013-02
    2013-03               | 2014-03
    2013-04                 2013-04
    2013-05                 2013-05
    2013-06                 2013-06
    2013-07                 2013-07
    2013-08               | 2013-07
    2013-09                 2013-09
    2013-10                 2013-10
                          > 2013-11
                          > 2013-12

    ملاحظة:

    • "|" يعني أن هناك اختلافاً بين محتويات الملفين

    • "<" يعني أن الملف التالي يحتوي على سطر أقل مقارنة بالملف السابق

    • ">" يعني أن الملف التالي يحتوي على سطر إضافي مقارنة بالملف السابق

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