כיצד להשוות שני קבצים בלינוקס

How Compare Two Files Linux



אם אתה רוצה להשוות שני קבצים ולפענח את ההבדל, פקודה נקראת diff משמש. מדריך זה מתמקד בלספק לך את השימוש ב- diff פקודה עם אפשרויות שונות כדי להשיג את ההבדל בין שני קבצים.

אם כן, כיצד פועל ה diff הפקודה באמת מתפקדת? ה diff הפקודה משווה את שני הקבצים ומוציאה רשימה של הבדלים בין שני הקבצים. ליתר דיוק, הוא מניב רשימה של שינויים הדורשים לבצע בקובץ הראשון כדי שיתאים לקובץ השני. ה diff הפקודה משמשת גם את המתכנתים כדי להשיג את ההבדל בין שני קבצי קוד מקור לפיתוח תיקונים.







לפני שתצלול לדוגמאות, שים לב כי סדר הקבצים חשוב מאוד. בגלל ה diff הפקודה נותנת פלט על פי סדר הקבצים.



כיצד להשתמש בפקודת diff ב- Linux להשוואת קבצים:

התחביר של ה diff הפקודה מוזכרת להלן:



$diff [אפשרויות] [קובץ 1] [קובץ 2]

ראשית, צור שני קבצים. אני יוצר קבצי טקסט בשם test_file_1.txt ו test_file_2.txt . קבצים אלה מכילים תוכן עם הבדל קל:





כעת השתמש בפקודה הבאה כדי לקבל את ההבדל:



$difftest_file_1.txt test_file_2.txt

הפלט הסטנדרטי הציג את השורות התואמות לפי סדר הקבצים המוזכרים בפקודה. אז בואו נפענח את הפלט:

השוואת הקבצים מסומנת, ולכל תווית יש מספר משני הצדדים. הפורמט הוא כדלקמן:

[מספר קו של קובץ 1] [תווית (a, c, d)] [מספר שורה של קובץ 2]

יש שלוש תוויות:

  • ל - הוסף: הוסף תוכן בקובץ הראשון לסנכרון עם הקובץ השני.
  • ג - שינוי: מציין כי יש צורך בשינוי בתוכן הקובץ הראשון כך שיתאים לקובץ השני.
  • ד - מחק: הסר תוכן מהקובץ הראשון שיתאים לקובץ השני.

2d1 מציין למחוק שורה מספר 2 של הקובץ הראשון כך שיתאים לקובץ השני משורה מספר 1.

באופן דומה, 4c3 פירושו לבצע שינוי בשורה הרביעית של הקובץ הראשון כך שיתאים לשורה מספר 3 של הקובץ השני מכיוון ששתי השורות שונות במקצת.

יש שיטה נוספת לראות את ההבדל, השתמש ב- diff פקודה עם אוֹפְּצִיָה:

$diff -IN 60test_file_1.txt test_file_2.txt

בפלט הנ'ל, התוכן של test_file_1.txt מוצג בצד שמאל, בעוד התוכן של text_file_2.txt מוצג בצד ימין. ההבדל מסומן על ידי הסמלים:

  • | - השורה שונה בקובץ השני
  • > - שורה נוספת בקובץ השני
  • <— Line has been deleted from the second file

ה- W מציין את הרוחב בין התוכן של שני קבצים. כדי לקבל בנפרד ולצפות בהבדל, השתמש באפשרויות הבאות:

$diff -IN 60 -דיכוי-קווים משותפיםtest_file_1.txt test_file_2.txt

כיצד להשיג פלט בשורה אחת באמצעות הפקודה diff:

אם קשה לפענח את השיטה המתויגת, יש גישה פשוטה יותר. משתמש ב -q אפשרות עם diff הפקודה נותנת לך פלט בשורה אחת. ובכן, ללא כל מידע נוסף, אם כי:

$diff -qtest_file_1.txt test_file_2.txt

אם הקבצים שונים, הפקודה למעלה תיתן פלט. אם הקבצים זהים, לא יהיה פלט. כדי להדגים זאת, אני יוצר עותק של test_file_1.txt באמצעות:

$cptest_file_1.txt test_file_3.txt

קובץ חדש ייווצר בשם test_file_3.txt המכיל את אותו התוכן ש test_file_1.txt יש ל. עכשיו, השתמש ב:

$diff -qtest_file_1.txt test_file_2.txt

מכיוון שלשני הקבצים יש תוכן דומה, לכן לא תהיה פלט.

כיצד לבדוק את ההבדל בין קבצים במצב הקשר באמצעות הפקודה diff:

כדי לקבל את ההשוואה במצב הקשר, האפשרות תשמש עם diff פקודה:

$diff test_file_1.txt test_file_2.txt

בואו ננתח את הפלט.

כדי לשמור על ההבדל, הקובץ הראשון מסומן על ידי *** יחד עם התאריך והשעה של היצירה, בעוד שהקובץ השני מסומן על ידי -.

השורה הבאה מסמלת טווח שורות הנחשב במהלך ההשוואה. עבור הקובץ הראשון, זהו *** 1.6 **** ולגבי הקובץ השני, זהו —1.5—- :

ההבדל מסומן על ידי הסמלים:

  • +: השורה אינה קיימת בקובץ הראשון. הכנס אותו לקובץ הראשון או הסר אותו מהקובץ השני כך שיתאים לשני הקבצים.
  • -: השורה קיימת בקובץ הראשון אך לא בקובץ השני. נסה להכניס אותו לקובץ השני או להסיר אותו מהקובץ הראשון כך שיתאים לשני הקבצים.
  • ! : קו זקוק לשינוי על מנת להתאים.

כיצד לבדוק את ההבדל בין קבצים במצב מאוחד באמצעות הפקודה diff:

המצב המאוחד דומה למדי למצב ההקשר אך ללא מידע מיותר. הדגל בו אנו משתמשים הוא -u :

$diff -utest_file_1.txt test_file_2.txt

בפלט, הקובץ הראשון מסומן על ידי - והשני על ידי +++. השורה השנייה מציגה את מספר השורות הנחשבות להשוואה בשני הקבצים, ואז התוכן למחיקה, הוספה או שינוי עם הסמלים עימם. לא יהיה סמל עם קווים דומים בשני הקבצים.

כיצד להתעלם מרגישות האותיות בעת שימוש בפקודה diff:

אם ברצונך להשוות בין הקבצים תוך התעלמות מרגישות האותיות, השתמש ב -אני דֶגֶל:

$diff -אניtest_file_1.txt test_file_2.txt

להדגמה, הכנתי את ד שֶׁל עמוק בפנים בקובץ הראשון קטן:

כפי שניתן לראות בפקודה הראשונה, ההבדל מצוין; תוך שימוש -אני ההבדל הזה הוסר.

כמה אפשרויות שימושיות אחרות של diff הפקודה מפורטת להלן:

אוֹפְּצִיָה תיאור
אפשרות זו מתייחסת לכל הקבצים כקובצי טקסט
הוא מתעלם משינוי שבו כל השורות ריקות
אפשרות זו מתעלמת מהרחבת הכרטיסיות
-אני הוא מתעלם מהשינויים שבהם כל הקווים תואמים
נותן פלט כאשר שני קבצים זהים
הוא מתעלם מכל החלל הלבן
-עם הוא מתעלם מרווח לבן בקו הקו

כיצד להשתמש בעורך Vim להשוואה בין שני קבצים:

שיטה נוספת להשוואת שני קבצים היא באמצעות vimdiff פקודה. לשם כך עליך להתקין את vim:

$סודומַתְאִיםלהתקין באתי

כעת, כדי להשוות בין שני קבצים השתמש:

$vimdiff test_file_1.txt test_file_2.txt

שני הקבצים ייפתחו זה לצד זה. החלק שאינו תואם יסומן:

כיצד להשוות שני קבצים באמצעות קולורדיף:

גישה נוספת היא מעין הרחבה של ה- diff פקודה. אתה יכול להפוך את ההשוואה לזיהוי יותר על ידי הוספת צבעים אליה. להתקנה השתמש:

$סודומַתְאִיםלהתקיןקולורדיף

כדי להשוות קבצים, השתמש ב:

$colordiff test_file_1.txt test_file_2.txt

אתה יכול להחליף diff עם קולורדיף כדי לקבל את הפלט הסטנדרטי של diff פקודה בפורמט צבעוני.

סיכום:

כדי להשוות קבצים בלינוקס ואפילו ב- macOS, כלי שנעשה בו שימוש נקרא diff. כלי השירות diff משווה שני קבצים ונותן מידע על ההבדלים בין שני הקבצים. המפתחים משתמשים בעיקר בפקודה diff כדי ליצור קבצי תיקון.

במדריך זה דנו ביסודיות בנושא diff פקודה וכיצד להשתמש בה כדי להשוות שני קבצים עם אפשרויות שונות. למדנו גם כיצד להשתמש קולורדיף כדי להפוך את הבדלי הקבצים לזיהוי יותר. אבל אם אתה מוצא שקשה להשתמש בכלי מבוסס מסוף, יש גם כמה כלים מבוססי GUI, כגון Kompare, DiffMerge, Meld-Diff Tool ו- Diffuse-GUI Giff Tool.