Linux Diff Command

Linux Diff Command



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

יצרנו שני קבצי טקסט בתיקיית העבודה של המערכת שלנו.









זה הזמן להשתמש בהוראה 'הבדל' באזור שאילתה כדי להציג את ההבדל בין שני תכני הקבצים. אנו מנסים את הוראת ה-'diff' הזו עם שני שמות הקבצים ברצף, כלומר קודם קובץ one.txt ולאחר מכן קובץ two.txt. ביצוע הפקודה 'diff' מראה לנו את ההבדל בין שני הקבצים כמו:



  • מספרי שורות לפי קובץ הטקסט הראשון.
  • תווים/סמלים מיוחדים כדי ליידע אותנו על ההבדל כמו שינוי, הוסף, מחק.
  • מספרי שורות לפי קובץ הטקסט השני.

באיור הראשון שלנו, אנו מרחיבים את סמל 'a' בין מספרי השורות של פלט הפקודה 'diff'; 'a' משמש כקיצור של 'הוסף'. השימוש בהוראה 'חתול' עם שני שמות הקבצים באזור השאילתה מציג בנפרד את התוכן בתוך כל קובץ טקסט, כלומר one.txt ו-two.txt. יש לנו בסך הכל 4 שורות בתוך הקובץ הראשון ואילו הקובץ השני מכיל 5 שורות. קו 1 הוא תוספת.





לאחר מכן, אנו מנסים את הוראת ה-'diff' באזור השאילתה המסוף ולאחריה את שמות הקבצים - one.txt ו-two.txt. הביצוע של הוראה זו מציג את '0a1' כפלט יחד עם שורה 1 מהקובץ השני שהוא שורה נוספת בקובץ השני. הערך המספרי '0' משמש עבור שורה 0 או לפני שורה 1 של הקובץ הראשון, כלומר one.txt. הסמל 'a' פירושו 'הוסף'. לבסוף, הערך המספרי '1' פירושו השורה הראשונה של הקובץ השני. פלט המיקס '0d1' אומר שיש להוסיף את שורה 1 של הקובץ השני 'two.txt' בראש הקובץ הראשון 'one.txt' לפני שהשורה הראשונה 2 הופכת את שני הקבצים לזהים.



כעת, אנו מעדכנים את שני הקבצים כדי לראות איור נוסף. הקובץ הראשון 'one.txt' מכיל 4 שורות והקובץ השני 'two.txt' מכיל רק 3 שורות. ההבדל היחיד עבור קבצים אלו הוא השימוש בשורה נוספת בקובץ הראשון, כלומר שורה 1 = 'יום שני' שאינה בקובץ השני. לאחר שניסינו את הוראת 'diff' עבור קבצי הטקסט המעודכנים, נקבל '1d0' בתור הפלט. והשורה הראשונה מהקובץ הראשון מוצגת. ב-'1d0', 1 אומר שיש למחוק את השורה הראשונה מהקובץ 'one.txt' (לפי הסמל 'd'), ו-0 אומר שהקובץ השני לא קיבל עדכון. בסופו של דבר, שורה 1 מהקובץ הראשון 'one.txt' מוצגת עבור ההבדל הברור.

באופן דומה, הפקודה 'diff' יכולה להציג הבדל בין השורות של שני קבצים. לכן, אנו מעדכנים את שני קבצי הטקסט שוב. הפעם, הקובץ הראשון מכיל 5 שורות ואילו הקובץ השני מכיל רק 4. ההבדל היחיד הוא השימוש בשורה נוספת ב-one.txt שהיא שורה 3. הפקודה diff המשמשת בשני הקבצים בטרמינל מציגה פלט '3d2' יחד עם שורה 3 מהקובץ הראשון 'one.txt'. פלט זה מראה שיש למחוק את שורה 3 מהקובץ הראשון 'one.txt' כדי שנוכל לסנכרן את שני הקבצים בשורה 2 של הקובץ השני. השורה השונה '3' מוצגת כך שנוכל לקבל מושג ברור לגבי ההבדל.

בואו נסתכל בצורה ברורה ומעמיקה יותר על הפלט. הפלט 1,5c1,2 מהתמונה הבאה מראה שיש לשנות את השורות 1 עד 5 של קובץ ראשון (one.txt) עם שורות 1 עד 2 של קובץ שני (two.txt). המשמעות היא שיש לשנות את 5 השורות הראשונות (1 עד 5) של קובץ one.txt ולהחליף אותן בשתי השורות הראשונות (1, 2) של הקובץ השני 'two.txt' כדי שיהיה זהה. בסופו של דבר, כל 5 השורות מהקובץ הראשון מוצגות שאותן יש להחליף ב-2 השורות המוצגות של הקובץ השני. כך הסימן 'c' מראה הבדל בין שני קבצים - אין קו זהה בשני הקבצים.

הפקודה 'diff' מאפשרת לך לקבל את הפלט שלה בצורת הקשר. תאר לעצמך שיש לך את אותם שני קבצים עם הנתונים הבאים בקבצים האלה. ההקשר סביב הפלט יהיה להציג את ההבדל העיקרי בין סך הקבצים הפשוטים שמוצגים בתמונה הבאה. כעת, יש לנו 5 שורות בקובץ הראשון 'one.txt' ו-4 שורות בקובץ השני 'two.txt'.

כדי לקבל את הפלט מבוסס ההקשר של הוראת 'diff', עלינו להשתמש באפשרות '-c' בתוך הפקודה 'diff'. באמצעות הקבצים שעודכנו בעבר בפקודה 'הבדל' זו, אנו מקבלים את הפלט הבא - תאריך, יום, יחד עם המידע הנוסף לגבי יצירת הטקסט בתוך הקבצים. מוצגות 5 השורות מקבצי one.txt. במיוחד, השורה השלישית שלו מודגשת באמצעות התו '-' כדי להוסיף אותו לקובץ אחר.

סיכום

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