لینوکس، روش‌های مختلفی را برای مقایسه دو فایل ارائه کرده است. یکی از محبوب‌ترین روش‌ها، استفاده از دستور diff است. در این آموزش، نحوه استفاده از دستور diff و برخی گزینه‌های دیگر برای مقایسه دو فایل در لینوکس شرح داده شده است.

 

در ابتدا دو فایل به صورت زیر ایجاد کنید تا از آن دو در کل آموزش استفاده نمایید.

متن برای فایل 1:

Welcome to the best source for learning Linux.
How are you doing?

متن برای فایل 2:

Welcome to Linux For Devices!
How are you doing?

 

دستور Diff برای مقایسه دو فایل در لینوکس

دستور Diff (خلاصه difference) معمولاً در هنگام مقایسه دو فایل مورد استفاده قرار می‌گیرد. خروجی دستور، مراحلی را بیان می‌کند که شما باید به منظور تغییر فایل اول برای مطابقت با فایل دوم دنبال نمایید.

ساختار دستور diff:

diff [option] [file 1] [file 2]

بیایید دستور diff را در عمل ببینیم.

diff [file 1] [file 2]

 

خروجی، تنها خطوطی را نمایش می‌دهد که مطابقت ندارند. همانطور که در دستور ذکر شده است، خطوط به ترتیب فایل‌ها نمایش داده می‌شوند.

در ادامه، خروجی دستور شرح داده شده است.

همانطور که مشاهده می‌کنید، خروجی با ‘1c1’ شروع می‌شود و در قالب [range] [abc] [range] است.

فیلد range اول به فایل اول و فیلد range دوم به فایل دوم تعلق دارد. فیلد سوم نیز می‌تواند یکی از سه حرف زیر باشد.

a: اضافه کردن (add)

c: تغییر دادن (change)

d: حذف کردن (delete)

در مثال ما، ‘1c1’بدان معنی است که شما برای اطمینان از همگام سازی این دو فایل باید شماره خط اول فایل اول را مطابق با شماره خط اول فایل دوم تغییر دهید.

3d2 به این معنی است که برای اطمینان از همگام سازی این دو فایل با خط دوم فایل دوم، باید شماره خط سوم فایل اول را حذف کنید.

 

این مطلب نیز ممکن است برای شما مفید باشد: نمایش اعداد خطوط در Vim

 

حالت متن (diff-c)

به منظور مشاهده تفاوت بین دو فایل در حالت متن (content) از گزینه c- به همراه دستور diff استفاده نمایید.

diff -c [file 1] [file 2]

 

بیایید سعی کنیم خروجی دستور را درک کنیم.

خروجی دستور با اطلاعات meta در مورد فایل شروع می‌شود که اطلاعاتی مانند نام فایل، تاریخ و زمان ایجاد و مجوزها است.

خط بعدی ***1.3**** است. این خط شامل شماره خطوط شروع و پایان برای مقایسه فایل‌ها است.

بعد از این، متن فایل اول است. در اینجا ممکن است نمادهای خاصی را قبل از خط ببینید. معنای این نمادها به شرح زیر است:

+: این خط در فایل اول وجود ندارد. شما می‌توانید آن را در فایل اول اضافه کنید یا از فایل دوم حذف نمایید.

-: این خط در فایل دوم وجود ندارد. شما می‌توانید آن را در فایل دوم اضافه کنید یا از فایل اول حذف نمایید.

!: این خط باید تغییر کند تا دو فایل با یکدیگر مطابقت داشته باشند.

همان اطلاعات برای فایل دوم نیز تکرار می‌شود.

 

قالب متحد (diff -u)

قالب متحد (unified)، یک نسخه بهبود یافته از حالت متن (content) است. ساختار این قالب به شرح زیر است:

diff -u [file 1] [file 2]

 

همانطور که می‌بینید این قالب همان اطلاعات را به صورت مختصر منتقل می‌کند.

 

این مطلب نیز ممکن است برای شما مفید باشد: ویرایش فایل های ریموت با Vim در لینوکس

 

استفاده از Vimdiff برای مقایسه دو فایل در لینوکس

روش دیگر برای مقایسه دو فایل استفاده از Vimdiff است. این ابزار تنها در صورتی کار می‌کند که ویرایشگر Vim را در سیستم خود داشته باشید.

نحوه مقایسه دو فایل با استفاده از vimdiff به شرح زیر است:

vimdiff [file 1] [file 2] 

 

همانطور که مشاهده می‌کنید در خروجی، دو فایل را در ویرایشگر Vim کنار هم باز می‌کند و قسمت‌هایی را که در دو فایل مطابقت ندارند، برجسته می‌نماید. اگر با ویرایشگر Vim راحت هستید، پیشنهاد می‌شود که از این روش استفاده کنید.

 

این مطلب نیز ممکن است برای شما مفید باشد: نحوه ذخیره سازی یک فایل در ویرایشگر Vim

 

استفاده از colordiff برای مقایسه دو فایل در لینوکس

Perl script colordiff، یک بسته بندی برای "diff" است که همان خروجی را به همراه برجسته سازی زیبا در ساختار متن ارائه می‌دهد. علاوه‌براین، به شما امکان سفارشی سازی رنگ‌ها را نیز می‌دهد.

به منظور نصب colordiff بر روی سیستم خود از دستور apt به صورت زیر استفاده نمایید:

sudo apt install colordiff

این دستور، colordiff را بر روی سیستم شما نصب می‌کند. برای مقایسه دو فایل با استفاده از colodiff به صورت زیر عمل کنید:

colordiff [file 1] [file 2] 

 

همانطور که می‌بینید، خروجی همان خروجی است که در بالا در دستور diff تولید شده است و تنها تفاوت در رنگ ساختار خروجی است.

 

 

 

منبع:

journaldev