OnWorks Linux ו-Windows Online WorkStations

לוגו

אירוח מקוון בחינם עבור תחנות עבודה

<הקודם | תוכן | הבא>

הבדל

כמו comm תָכְנִית, הבדל משמש לזיהוי ההבדלים בין הקבצים. למרות זאת, הבדל הוא כלי הרבה יותר מורכב, התומך בפורמטים רבים של פלט וביכולת לעבד אוספים גדולים של קבצי טקסט בבת אחת. הבדל משמש לעתים קרובות על ידי מפתחי תוכנה כדי לבחון שינויים בין גרסאות שונות של קוד מקור תוכנה, ולכן יש לו את היכולת לבחון באופן רקורסיבי ספריות של קוד מקור, המכונה לעתים קרובות עצי מקור. שימוש נפוץ אחד עבור הבדל הוא יצירתו של קבצי diff or טלאים המשמשות תוכניות כגון תיקון (עליו נדון בקרוב) כדי להמיר גרסה אחת של קובץ (או קבצים) לגרסה אחרת.

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


[me@linuxbox ~]$ diff file1.txt file2.txt

1d0

< a 4a4

> ו

[me@linuxbox ~]$ diff file1.txt file2.txt

1d0

< a 4a4

> ו


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


טבלה 20-4: פקודות שינוי שונות


שנה תיאור

שנה תיאור

r1ar2 הוסף את השורות בעמדה r2 בקובץ השני לתפקיד

r1 בקובץ הראשון.


תמונה

r1cr2 שנה (החלף) את הקווים במיקום r1 עם הקווים בעמדה r2 בקובץ השני.


תמונה

r1dr2 מחק את השורות בקובץ הראשון במיקום r1, שהיה מופיע בטווח r2 בקובץ השני


תמונה


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

בעת צפייה באמצעות פורמט ההקשר (ה -c אפשרות), נראה את זה:


[me@linuxbox ~]$ diff -c file1.txt file2.txt

*** file1.txt 2008-12-23 06:40:13.000000000 -0500

--- file2.txt 2008-12-23 06:40:34.000000000 -0500

***************

*** 1,4 ****

- א ב ג ד

--- 1,4 ----

bcd

+ ה

[me@linuxbox ~]$ diff -c file1.txt file2.txt

*** file1.txt 2008-12-23 06:40:13.000000000 -0500

--- file2.txt 2008-12-23 06:40:34.000000000 -0500

***************

*** 1,4 ****

- א ב ג ד

--- 1,4 ----

bcd

+ ה


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

*** 1,4***

מה שמציין שורות 1 עד 4 בקובץ הראשון. בהמשך נראה:

--- 1,4 ---

מה שמציין את שורות 1 עד 4 בקובץ השני. בתוך קבוצת שינוי, השורות מתחילות באחד מארבעה אינדיקטורים:


טבלה 20-5: אינדיקטורים לשינוי תבנית הקשר שונה


משמעות אינדיקטור

משמעות אינדיקטור

ריק שורה המוצגת להקשר. זה לא מצביע על הבדל בין שני הקבצים.


תמונה

- שורה נמחקה. שורה זו תופיע בקובץ הראשון אך לא בקובץ השני.


תמונה


תמונה

+ נוספה שורה. שורה זו תופיע בקובץ השני אך לא בקובץ הראשון.


תמונה

! שורה שונה. שתי הגרסאות של השורה יוצגו, כל אחת בקטע שלה בקבוצת השינוי.


תמונה


הפורמט המאוחד דומה לפורמט ההקשר אך הוא תמציתי יותר. זה מצוין עם ה -u אפשרות:


[me@linuxbox ~]$ diff -u file1.txt file2.txt

--- file1.txt 2008-12-23 06:40:13.000000000 -0500

+++ file2.txt 2008-12-23 06:40:34.000000000 -0500

@@ -1,4 + 1,4 @@

-א ב ג ד

+e

[me@linuxbox ~]$ diff -u file1.txt file2.txt

--- file1.txt 2008-12-23 06:40:13.000000000 -0500

+++ file2.txt 2008-12-23 06:40:34.000000000 -0500

@@ -1,4 + 1,4 @@

-א ב ג ד

+e


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


טבלה 20-6: אינדיקטורים שונים לשינוי פורמט מאוחד


משמעות הדמות

משמעות הדמות

ריק שורה זו משותפת לשני הקבצים.


תמונה

- שורה זו הוסרה מהקובץ הראשון.


תמונה

+ שורה זו נוספה לקובץ הראשון.


תמונה


מחשוב ענן מערכת ההפעלה המוביל ב-OnWorks: