دستور cmp در لینوکس

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


سینتکس اصلی دستور cmp لینوکس به شرح زیر است:


cmp [options] file1 file2

  • file1 و file2: این دو فایلی هستند که می‌خواهید با هم مقایسه کنید
  • [options]: فلگ‌های اختیاری برای تغییر رفتار دستور

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


پیش نیازهای استفاده از دستور cmp در لینوکس

  • یک VPS لینوکس که (اوبونتو، دبیان، CentOS و...)
  • یک کاربر non-root با امتیازات sudo
  • دسترسی به ترمینال یا خط فرمان
     
سرور مجازی یک ماشین مجازی کامل است که می‌توانید سیستم عامل مورد نظر خود را انتخاب و روی آن نصب نمائید.
خرید سرور مجازی در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.


8 مثال عملی برای درک دستور مقایسه فایل لینوکس

در دنیای توسعه نرم افزار و مدیریت سیستم، مقایسه فایل‌ها برای تایید تغییرات، اشکال زدایی و اطمینان از یکپارچگی داده ها بسیار مهم است. دستور cmp در لینوکس به عنوان یک ابزار قدرتمند برای این منظور عمل می‌کند و به کاربران اجازه می‌دهد تا به سرعت تفاوت بین فایل‌ها را شناسایی کنند.

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

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

سینتکس:

cmp file1 file2

file1 و file2 دو فایلی هستند که می‌خواهید با هم مقایسه کنید.

مثال:
فرض کنید می‌خواهید بررسی کنید که فایل های file1.txt و file2.txt یکسان هستند یا خیر. 
دستور زیر را اجرا کنید:


cmp file1.txt file2.txt

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

خروجی

خروجی دستور cmp

خروجی بالا به شما می‌گوید که اولین تفاوت در بایت 31 در خط 5 است که به شما امکان می‌دهد به راحتی عدم تطابق را پیدا کنید.
این روش برای هر کاربر لینوکسی که به دنبال مقایسه کارآمد فایل‌ها در لینوکس است ضروری است.

  1. چاپ بایت‌های مختلف با دستور cmp در لینوکس

برای چاپ بایت‌های متفاوت واقعی بین دو فایل با استفاده از دستور cmp در لینوکس، می‌توانید از گزینه b- استفاده کنید.
این گزینه موقعیت بایت‌ها و مقادیر متفاوت آنها را در فرمت octal  نمایش می‌دهد و امکان تجزیه و تحلیل دقیق اختلافات را فراهم می‌کند.

سینتکس:


cmp -b file1 file2

مثال:
برای مشاهده بایت‌های متفاوت بین دو فایل file1.txt و file2.txt دستور زیر را اجرا کنید:

cmp -b file1.txt file2.txt

خروجی:
 

خروجی دستور cmp -b در لینوکس

در خروجی بالا، ستون byte موقعیت هر تفاوت را نشان می‌دهد، در حالی که ستون‌های زیر مقادیر متفاوت بایت را از file1.txt و file2.txt نشان می‌دهند.

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

همچنین، هنگام کار با فایل‌های باینری، گزینه b- می‌تواند به شناسایی اختلافات در مقادیر کمک کند:


cmp -b binary1.bin binary2.bin

  1. نمایش همه بایت‌های اختلاف با موقعیت

برای نمایش موقعیت و مقدار بایت برای همه بایت‌های متفاوت بین دو فایل، می‌توانید از گزینه l- با دستور cmp در لینوکس استفاده کنید.

سینتکس:
اجرای دستور زیر لیست جامعی از موقعیت هر بایت که در آن تفاوت‌ها رخ می‌دهد، همراه با مقادیر آن‌ها در فرمت octal، فراهم نموده که امکان مقایسه عمیق فایل‌ها را فراهم می‌کند:


cmp -l file1 file2

مثال:
از دستور زیر برای دیدن همه بایت‌های متفاوت به همراه موقعیت‌های آنها برای فایل‌های file1.txt و file2.txt استفاده کنید:


cmp -l file1.txt file2.txt

خروجی

خروجی دستور cmp -l در لینوکس

در خروجی بالا، ستون اول موقعیت بایت هر تفاوت را نشان می‌دهد، در حالی که دو ستون بعدی مقادیر متفاوت بایت را به ترتیب با file1.txt و file2.txt در قالب اکتال نشان می‌دهند.

این فرمت به شما کمک می‌کند تا به سرعت محل اختلاف فایل‌ها را مشخص و تفاوت‌ها را درک کنید.

  1. رد کردن بایت‌های اولیه (Initial) با دستور cmp لینوکس

برای رد شدن (skip) از تعداد مشخصی از بایت‌های اولیه هنگام مقایسه دو فایل با استفاده از دستور cmp در لینوکس، می‌توانید از گزینه -i و سپس تعداد بایت های پرش استفاده کنید.

سینتکس:
اجرای دستور زیر N بایت اول هر دو فایل را نادیده می‌گیرد و به شما امکان می‌دهد مقایسه را روی محتوای باقی مانده متمرکز کنید:


cmp -i N file1 file2

N تعداد بایت‌های اولیه‌ای است که باید از هر دو فایل پرش کنید.

مثال:
از دستور زیر برای پرش از 10 بایت اول file1.txt و file2.txt استفاده کنید:


cmp -i 10 file1.txt file2.txt

خروجی دستور cmp -i

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

  1. محدود کردن تعداد بایت‌ها در مقایسه با cmp

برای محدود کردن تعداد بایت‌های مقایسه شده بین دو فایل با استفاده از دستور cmp در لینوکس، می‌توانید از گزینه n- و سپس تعداد بایت مورد نظر استفاده کنید.

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

cmp -n N file1 file2

N تعداد بایت‌هایی است که باید مقایسه شوند.

مثال:
برای مقایسه تنها 20 بایت اول file1.txt و file2.txt، اجرا کنید:

cmp -n 20 file1.txt file2.txt

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

همچنین، استفاده از گزینه n- به شما امکان می‌دهد هنگام دیباگ یا تایید گزارش‌ها، روی چند خط اول تمرکز کنید:

cmp -n 100 log1.txt log2.txt

  1. نمایش Progress Meter با دستور cmp

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

سینتکس:
اجرای دستور زیر فایل‌های file1 و file2 را با اندازه گیری پیشرفت مقایسه می‌کند که وضعیت را در طول عملیات نشان می‌دهد.

cmp -v file1 file2

مثال:
برای مقایسه file1.txt و file2.txt هنگام مشاهده پیشرفت، دستور زیر را اجرا کنید:


cmp -v file1.txt file2.txt

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

همچنین، می‌توانید از گزینه -v برای دریافت بازخورد لحظه‌ای و ماینتور بر مقایسه‌های طولانی‌مدت استفاده کنید:


cmp -v largefile1.txt largefile2.txt

  1. سرکوب (Suppressing) خروجی با دستور cmp

برای سرکوب تمام خروجی‌های دستور cmp در لینوکس، می‌توانید از گزینه s- استفاده کنید که حالت سکوت را فعال می‌کند.

سینتکس:
اگر فایل‌ها یکسان باشند، با اجرای دستور زیر هیچ خروجی نمایش داده نمی‌شود و روشی تمیز و بدون مزاحم برای بررسی تفاوت‌ها ارائه می‌کند:


cmp -s file1 file2

مثال:
از دستور زیر برای مقایسه file1.txt و file2.txt بدون هیچ خروجی استفاده کنید:


cmp -s file1.txt file2.txt

در این حالت، اگر فایل‌ها یکسان باشند، خروجی وجود نخواهد داشت، اما در صورت تفاوت، دستور یک وضعیت خروج غیر صفر (non-zero) را برمی‌گرداند که برای پردازش بیشتر قابل بررسی است.

همچنین، می‌توانید از گزینه s- در اسکریپت‌ها استفاده کنید تا بررسی کنید که آیا دو فایل یکسان هستند یا نه و بر اساس نتیجه، اقداماتی را آغاز کنید:

 

if cmp -s file1.txt file2.txt; then
    echo "Files are identical."
else
    echo "Files differ."
fi

  1. نمایش راهنما با دستور cmp

اگر برای استفاده از دستور cmp در لینوکس و گزینه‌های موجود آن به راهنمایی نیاز دارید، گزینه h- یک پیام راهنما نمایش می‌دهد.

سینتکس:
برای مشاهده یک نمای کلی از نحوه استفاده از دستور، از جمله سینتکس و گزینه‌های موجود، که درک و استفاده از عملکرد آن را برای کاربران آسان‌تر می‌کند، اجرا نمائید:


cmp -h


مثال:
دستور زیر را اجرا کنید تا اطلاعات راهنمای دستور cmp را در لینوکس ببینید:


cmp -h

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

نتیجه گیری

دستور cmp یک ابزار ضروری برای هر کسی است که در لینوکس کار می‌کند و نیاز به مقایسه کارآمد فایل‌ها دارد. با تسلط بر گزینه‌ها و برنامه‌های مختلف آن، می‌توانید قابلیت‌های مدیریت فایل خود را افزایش داده  و از یکپارچگی داده‌ها در سراسر سیستم اطمینان حاصل کنید.
چه در حال انجام یک بررسی ساده فایل یا اعتبارسنجی داده‌های پیچیده باشید، استفاده از دستور cmp گردش کار شما را ساده خواهد کرد.