Android

Diff parancs a linuxban

Visual Studio Code tips and tricks | BOD103

Visual Studio Code tips and tricks | BOD103

Tartalomjegyzék:

Anonim

diff egy parancssori segédprogram, amely lehetővé teszi két fájl soronkénti összehasonlítását. Össze tudja hasonlítani a könyvtárak tartalmát.

A diff parancsot leggyakrabban egy olyan javítás létrehozására használják, amely tartalmazza a patch paranccsal alkalmazható egy vagy több fájl közötti különbségeket.

Hogyan kell használni a diff parancsot

A diff parancs szintaxisa a következő:

diff… FILES

A diff parancs több formátumban képes megjeleníteni a kimenetet, a leggyakoribb a normál, a kontextus és az egységes formátum. A kimenet információkat tartalmaz arról, hogy a fájlokban mely sorokat kell megváltoztatni, hogy azok azonosak legyenek. Ha a fájlok megegyeznek, akkor nem készül kimenet.

A parancs kimenetének fájlba mentéséhez használja az átirányítási operátort:

diff file1 file2 > patch

, a következő két fájlt fogjuk használni, hogy megmagyarázzuk, hogyan működik a diff parancs:

fájl1

Ubuntu Arch Linux Debian CentOS Fedora fájl2

Kubuntu Ubuntu Debian Arch Linux Centos Fedora

Normál formátum

A legegyszerűbb formában, amikor a diff parancsot két szövegfájlon fut, opció nélkül, normál formátumú kimenetet állít elő:

diff file1 file2

A kimenet így néz ki:

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

A normál kimeneti formátum egy vagy több részből áll, amelyek leírják a különbségeket. Minden szakasz így néz ki:

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

0a1 , 2d2 és 4c4, 5 változási parancsok. Minden változási parancs a következőket tartalmazza, balról jobbra:

  • Az első fájl sorszáma vagy sorainak tartománya.Különleges karakter. A második fájl sorszáma vagy sorainak sorozata.

A változás karakter lehet a következők egyikének:

  • a - Adja hozzá a sorokat. c - Vonalak módosítása. d - törölje a sorokat.

A módosítási parancsot a teljes sorok követik, amelyeket eltávolítanak ( < ) és hozzáadnak a fájlhoz ( > ).

Magyarázza el a kimenetet:

  • 0a1 - Adja hozzá a második fájl 1 sorát a fájl1 elejéhez (a 0 sor után).
    • > Kubuntu - A második sor sora, amelyet hozzáadunk az első fájlhoz a fentiek szerint.
    2d2 - Törölje az első fájl 2 sorát. A d szimbólum utáni 2 azt jelenti, hogy ha a sort nem törli, akkor a második fájl 2 sorában jelenik meg.
    • < Arch Linux - a törölt sor.
    4c4, 5 - Cserélje ki (módosítsa) az első fájl 5 sorát a második fájl 4-5 soraira.
    • < CentOS - Az első cserélhető fájl sora. --- - elválasztó. > Arch Linux és > Centos - Vonalak a második fájlból, amely az első fájl sorát váltja fel.

Kontextus formátuma

A környezet kimeneti formátumának használatakor a diff parancs több összefüggési sort jelenít meg a sorok között, amelyek különböznek a fájlok között.

A -c opció azt mondja a diff , hogy a kimenetet környezet formátumban hozzák létre:

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

A kimenet a nevekkel és az időbélyegzővel kezdődik, ha összehasonlítják a fájlokat, és egy vagy több szakaszban leírják a különbségeket. Minden szakasz így néz ki:

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

  • from-file-line-numbers és to-file-line-numbers - Az első és a második fájl sorai vagy vesszővel elválasztott sorok az első fájlban. from-file-line to-file-line - a különböző sorok és a kontextus sorai:
    • A két szóközzel kezdődő sor kontextus sora, a sor mindkét fájlban azonos. A mínusz szimbólummal ( - ) kezdődő sorok azok a sorok, amelyek nem felelnek meg a második fájlban. A második fájlban hiányzó sorok.A plusz szimbólummal ( + ) kezdődő sorok azok a sorok, amelyek nem felelnek meg az első fájlban. Az első fájlban hiányzó sorok.A felkiáltójellel ( ! ) Kezdődő sorok azok a sorok, amelyeket két fájl között váltunk. Minden sorcsoport kezdődik ! az első fájlból a megfelelő egyezés található a második fájlban.

Magyarázza el a kimenet legfontosabb részeit:

  • Ebben a példában csak egy rész található, amely leírja a különbségeket. *** 1, 6 **** és --- 1, 7 ---- megmutatja nekünk az ebben a szakaszban szereplő első és második fájl sorainak sorát. Ubuntu , Debian , Fedora és a Az utolsó üres sor megegyezik mindkét fájlban. Ezek a sorok kettős szóközzel kezdődnek. Vonalak - Arch Linux az első fájlból nem felel meg a második fájlnak. Bár ez a sor a második fájlban is létezik, a pozíciók különböznek.Line + Kubuntu a második fájlból semmi nem felel meg az elsõ fájlnak.Line ! CentOS ! CentOS az első fájlból és sorokból ! Arch Linux ! Arch Linux és ! CentOS A második fájlból származó ! CentOS megváltozik a fájlok között.

Alapértelmezés szerint a környezeti sorok száma alapértelmezés szerint három. Másik szám megadásához használja a -C ( --contexts ) opciót:

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

Egységes formátum

Az egységes kimeneti formátum a környezeti formátum továbbfejlesztett változata, és kisebb kimenetet eredményez.

A -u opcióval mondhatja el a diff hogy a kimenetet egységes formátumban nyomtassa:

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

A kimenet a fájlok nevével és időbélyegeivel kezdődik, és egy vagy több, a különbségeket leíró szakaszból áll. Az egyes szakaszok a következő formában vannak:

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

  • @@ from-file-line-numbers to-file-line-numbers @@ - az ebben a szakaszban található első és második fájl sorának sorszáma vagy sorozata. line-from-files - a különböző sorok és a kontextus sorai:
    • A két szóközzel kezdődő sor kontextus sora, a két fájlban azonos sorok.A mínusz szimbólummal ( - ) kezdődő sorok azok az sorok, amelyeket eltávolítanak az első fájlból.A plusz szimbólummal ( + ) kezdődő sorok az első fájlból hozzáadott sorok.

Nem veszi figyelembe az esetet

Mint a fenti példákban észreveheti, a diff parancs alapértelmezés szerint kis- és nagybetűk között érzékeny.

A -i opcióval mondhatja meg a diff hogy figyelmen kívül hagyja az esetet:

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

Következtetés

A különféle szövegfájlok összehasonlítása a Linux rendszergazdák egyik leggyakoribb feladata.

A diff parancs a fájlokat soronként összehasonlítja. További információkért írja be a man diff a terminálba.

diff terminál