אנדרואיד

פקודה שונה בלינוקס

תוכן עניינים:

Anonim

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

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

כיצד להשתמש diff

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

diff… FILES

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

כדי לשמור את פלט הפקודה בקובץ, השתמש במפעיל ההפניה מחדש:

diff file1 file2 > patch

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

קובץ 1

Ubuntu Arch Linux Debian CentOS Fedora קובץ 2

Kubuntu Ubuntu Debian Arch Linux Centos Fedora

פורמט רגיל

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

diff file1 file2

הפלט ייראה כך:

0a1 > Kubuntu 2d2 < Arch Linux 4c4, 5 < CentOS --- > Arch Linux > Centos

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

change-command < from-file-line… --- > to-file-line…

0a1 , 2d2 ו- 4c4, 5 הן פקודות שינוי. כל פקודת שינוי מכילה את הדברים הבאים משמאל לימין:

  • מספר השורה או טווח השורות בקובץ הראשון. תו שינוי מיוחד. מספר השורה או טווח השורות בקובץ השני.

אופי השינוי יכול להיות אחד מהבאים:

  • a - הוסף את השורות. c - שנה את הקווים. d - מחק את השורות.

אחרי פקודת השינוי אחריהם שורות השלמות שהוסרו ( < ) ונוספות לקובץ ( > ).

בואו נסביר את הפלט:

  • 0a1 - הוסף שורה 1 של הקובץ השני בתחילת הקובץ 1 (אחרי שורה 0 ).
    • > Kubuntu - הקו מהשורה השנייה שמתווסף לקובץ הראשון כמתואר לעיל.
    2d2 - מחק שורה 2 בקובץ הראשון. הסמל 2 אחרי סמל d פירושו שאם הקו לא יימחק הוא יופיע בשורה 2 בקובץ השני.
    • < Arch Linux - השורה שנמחקה.
    4c4, 5 - החלף (שנה) קו 5 בקובץ הראשון בשורות 4-5 מהקובץ השני.
    • < CentOS - השורה בקובץ הראשון שיש להחליף. --- - מפריד. > Arch Linux ו- > Centos - קווים מהקובץ השני המחליף את הקו בקובץ הראשון.

פורמט הקשר

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

האפשרות -c אומרת diff להפיק פלט בתבנית ההקשר:

diff -c file1 file2

*** file1 2019-11-25 21:00:26.422426523 +0100 --- file2 2019-11-25 21:00:36.342231668 +0100 *************** *** 1, 6 **** Ubuntu - Arch Linux Debian ! CentOS Fedora --- 1, 7 ---- + Kubuntu Ubuntu Debian ! Arch Linux ! Centos Fedora

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

*************** *** from-file-line-numbers **** from-file-line… --- to-file-line-numbers ---- to-file-line…

  • from-file-line-numbers to-file-line-numbers השורות או טווח השורות המופרד בפסיקים בקובץ הראשון והשני, בהתאמה. from-file-line to-file-line - הקווים השונים וקווי ההקשר:
    • קווים המתחילים בשני רווחים הם קווי הקשר, הקווים זהים בשני הקבצים. קווים המתחילים בסמל מינוס ( - ) הם הקווים שאינם קשורים לשום דבר בקובץ השני. קווים חסרים בקובץ השני. קווים שמתחילים בסמל הפלוס ( + ) הם הקווים שאינם מתאימים לשום דבר בקובץ הראשון. קווים חסרים בקובץ הראשון. קווים המתחילים בסימן הקריאה ( ! ) הם הקווים שמשתנים בין שני קבצים. כל קבוצת שורות מתחילה ! מהקובץ הראשון יש התאמה מקבילה בקובץ השני.

בואו נסביר את החלקים החשובים ביותר בתפוקה:

  • בדוגמה זו יש לנו רק פרק אחד המתאר את ההבדלים. *** 1, 6 **** ו- --- 1, 7 ---- מספרים לנו את טווח השורות מהקבצים הראשון והשני הכלולים בסעיף זה. קו Ubuntu , Debian , Fedora , השורה הריקה האחרונה זהה בשני הקבצים. קווים אלו מתחילים עם שטח כפול. קו - Arch Linux מהקובץ הראשון לא תואמת שום דבר בקובץ השני. למרות ששורה זו קיימת גם בקובץ השני, המיקומים שונים. קו + Kubuntu מהקובץ השני אינו תואם דבר בקובץ הראשון. קו ! CentOS ! CentOS מהקובץ והשורות הראשונות ! Arch Linux ! Arch Linux ו- ! CentOS ! CentOS מהקובץ השני משתנים בין הקבצים.

כברירת מחדל, מספר שורות ההקשר מוגדר כברירת מחדל לשלושה. כדי לציין מספר אחר השתמש באפשרות -C (- --contexts ):

diff -C 1 file1 file2

*** file1 2019-11-25 21:00:26.422426523 +0100 --- file2 2019-11-25 21:00:36.342231668 +0100 *************** *** 1, 5 **** Ubuntu - Arch Linux Debian ! CentOS Fedora --- 1, 6 ---- + Kubuntu Ubuntu Debian ! Arch Linux ! Centos Fedora

פורמט מאוחד

פורמט הפלט המאוחד הוא גרסה משופרת של תבנית ההקשר ומפיק פלט קטן יותר.

השתמש באפשרות -u כדי להגיד diff להדפיס את הפלט בפורמט המאוחד:

diff -u file1 file2

--- file1 2019-11-25 21:00:26.422426523 +0100 +++ file2 2019-11-25 21:00:36.342231668 +0100 @@ -1, 6 +1, 7 @@ +Kubuntu Ubuntu -Arch Linux Debian -CentOS +Arch Linux +Centos Fedora

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

*************** @@ from-file-line-numbers to-file-line-numbers @@ line-from-files…

  • @@ from-file-line-numbers to-file-line-numbers @@ - מספר השורה או טווח השורות מהקבצים הראשון והשני הכלולים בסעיף זה. line-from-files - הקווים השונים וקווי ההקשר:
    • קווים המתחילים בשני רווחים הם קווי הקשר, הקווים שהם זהים בשני הקבצים. קווים המתחילים בסמל מינוס ( - ) הם הקווים שמוסרים מהקובץ הראשון. הקווים המתחילים בסמל הפלוס ( + ) הם השורות שנוספות מהקובץ הראשון.

התעלם מהמקרה

כפי שתבחין בדוגמאות שלעיל, פקודת ה- diff היא רגישה לרישיות.

השתמש באפשרות -i כדי לספר את diff להתעלמות מהתיק:

diff -ui file1 file2

--- file1 2019-11-25 21:00:26.422426523 +0100 +++ file2 2019-11-25 21:00:36.342231668 +0100 @@ -1, 6 +1, 7 @@ +Kubuntu Ubuntu -Arch Linux Debian +Arch Linux CentOS Fedora

סיכום

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

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

מסוף diff