Movatterモバイル変換


[0]ホーム

URL:


Přeskočit na obsah
WikipedieWikipedie: Otevřená encyklopedie
Hledání

diff

Z Wikipedie, otevřené encyklopedie
diff
VývojářBellovy laboratoře aDouglas McIlroy
Typ softwarupočítačový program, standardní UNIXová utilita či příkaz afile comparison
Některá data mohou pocházet zdatové položky.

diff je v informatice nástroj, který se používá pro zjištění rozdílů mezi dvěmatextovými soubory tak, že vypíše řádky, kterými se zadané soubory liší. Nalezneme jej vUnix a operačních systémechunixového typu. Nástroj je využíván zejménaprogramátory, kteří tak mohou snadno prohlédnout změny, ke kterým vezdrojovém kódu programu došlo. Příbuzným nástrojem jediff3, který porovnává tři soubory. Výstup programu diff označujeme jako patch (záplata) a lze ho použít k aplikaci na původní soubor pomocí stejnojmenného nástrojepatch.

Popis činnosti

[editovat |editovat zdroj]

Nástrojdiff slouží k zjištění rozdílů mezi dvěma soubory, které jsou zadány na vstupu (starýnový). Na rozdíl od nástrojecmp (který jen ohlásí, zda jsou soubory stejné nebo rozdílné) je výstupem nástrojediff seznam změn, ke kterým došlo (přidaný řádek, smazaný řádek, změněný řádek). Změny jsou obvykle doplněny také okolními (nezměněnými) řádky textu (tzv. kontext), který slouží k lepšímu pochopení změn a pro kontrolu umístění popsaných změn.

Při posuzování změn je možné ignorovat změny založené na přidání nebo odebrání prázdných řádků,bílých znaků (mezerytabulátory), ale i určitých řádků, takže i pro různé soubory může být nástrojemdiff zjištěno, že se neliší.

Výstupem programu je seznam změn, který je zapsán v jednom z dostupných formátů (viz dále). Tento výstup označujeme pojmempatch (záplata). Máme-li k dispozici původní verzi souboru (který byl použit při porovnání jakostarý – viz výše) a záplatu, můžeme pomocí stejnojmenného nástrojepatch na něj aplikovat změny a získat tak novou verzi souboru (viznový výše). Nástrojpatch pracuje inverzně vůči nástrojidiff. Programátoři proto nemusí při spolupráci posílat neustále celé změněné soubory, ale stačí poslat jen seznam změn k poslední všeobecně známé verzi, tj. záplatu (patch).

diff [volby] stary_soubor novy_soubor

Příkazdiff porovnává obsah souborustary_soubor s obsahem souborunovy_soubor. Je-li místo jména souboru použit znak „-“, čte se místo nějstandardní vstup. Pokud je jeden z argumentů adresář a druhý je soubor, potom příkaz porovnává obsah uvedeného souboru se stejnojmenným souborem v uvedeném adresáři. V tomto případě se soubor nesmí nahradit znakem minus. Jsou-li oba argumenty jména adresářů, potom se porovnávají obsahy souborů v uvedených adresářích v abecedním pořadí. Potřebujeme-li adresáře prohledávatrekurzivně (tj. včetně podadresářů), zadáme volbu-r (nebo--recursive vGNU implementaci). Příkaz neporovnává obsahy adresářů jakožto souborů s adresářovou informací.

Porovnání binárních a textových souborů

[editovat |editovat zdroj]

Příkazdiff je primárně určen na porovnávání textových souborů po řádcích. Na začátku porovnávání se však vždy zjišťuje, o jaký typ souboru jde. Pokud se v prvních několikaKiB souboru nenajde jedinýnull znak, potom se soubor považuje za textový. V opačném případě jde o binární soubor, diff je porovnábajt po bajtu a pouze oznámí, že se soubory liší (nebo neoznámí nic, potom jsou soubory shodné). Příkaz lze volbou-a nebo--text násilně vnutit, že jde o textové soubory. Diff potom tyto soubory bude porovnávat textově. Naopak zadáním volby--brief spustíme binární porovnávání opět bez ohledu na skutečný typ souboru. K dispozici je rovněž volba--binary, která však v systémech vyhovujících normámPOSIX (např.Linux) nemá význam. Význam má tam, kde se řádky ukončují dvojicí znakůCR,LF. Normálně se v takovém systému znak CR na vstupu vynechává a na výstupu se přidává. Po uvedení--binary se CR na vstupu přečte jako každý jiný znak a na výstupu se nepřidává. (Žádná z voleb zmíněných v této sekci není součástí POSIX specifikace).

Formáty výstupů

[editovat |editovat zdroj]

Příkazdiff umí údaje předávat na výstup v několika formátech. Normální (implicitní) je takový, ve kterém se vypisují pouze ty řádky, které jsou v jednom či druhém souboru navíc nebo se liší. Tento formát se však pro vytváření záplat běžně nepoužívá.

Obecný formát normálního výpisu je následující:

popis změny<řádek z prvního souboru<řádek z prvního souboru…--->řádek ze druhého souboru>řádek ze druhého souboru…

Možné popisy změny jsou tři. Obsahují vždy číslo řádku nebo interval čísel řádků (čísla se v intervalu oddělují čárkou) z prvního souboru (vztahuje se k pořadí jmen souborů uvedených na příkazovém řádku při spuštění diff), dále pak identifikátor změny (a, c, d) a číslo řádku nebo interval řádků ze druhého souboru.

LaR
Ve druhém souboru jsou navíc řádky R patřící za řádek L prvního souboru. Např. 8a12, 15 znamená, že ve druhém souboru jsou navíc řádky 12–15 a patří za řádek 8 v prvním souboru.
FcT
Řádky F z prvního souboru byly změněny. Ve druhém souboru jsou jim odpovídající řádky T. Např. popis 5,7c8,10 znamená, že se liší řádky 5–7 v prvním souboru a jim odpovídající jsou řádky 8–10 ve druhém souboru.
RdL
Ve druhém souboru chybí řádky R z prvního souboru. Tyto řádky by patřily za řádek L druhého souboru. Např. 5,7d3 znamená, že za řádkem 3 ve druhém souboru chybějí řádky 5–7 prvního souboru.

Další možný výstupní formát je kontextový. Zde diff změny zobrazí spolu s okolními řádky. Uživatel tak lépe pochopí význam změn. Kontextový výstupní formát zapínáme jednou z voleb-c,-C--context. Dvěma posledním volbám zadáváme jako parametr počet řádků vypisovaného okolí. Nástrojpatch typicky vyžaduje pro kontrolu aplikovaných změn dva řádky okolí.

Řádky obsahující okolí začínají dvěma mezerami. Rozdílné řádky obsahují v prvním sloupci jeden z následujících znaků a ve druhém sloupci mezeru:

!
Řádek je ze skupiny jednoho nebo více změněných řádků. Ve výpise jsou řádky označené „!“ jak pro první soubor, tak i pro druhý soubor.
+
Řádky navíc ve druhém souboru nemají svůj obraz v prvním souboru.
-
Řádky navíc v prvním souboru nemají svůj obraz ve druhém souboru.

Pokud jsou změny pouze typu + a -, potom se okolí v opačném souboru nevypisuje.

Dalším typem výstupního formátu je unifikovaný (sjednocený) kontextový formát. Jeho výhodou proti kontextovému způsobu výpisu je odstranění nadbytečných opakujících se řádků. Výpis v tomto tvaru se získá volbami-u,-U nebo--unified.

Externí odkazy

[editovat |editovat zdroj]
  • diff – The Open Group Base Specifications Issue 8 [online]. The IEEE and The Open Group, 2024 [cit. 2025-08-06].Dostupné online. 

Související články

[editovat |editovat zdroj]
Příkazy a programypříkazové řádkyUnixu (více)
Správa souborů

catchattrcdchmodchownchgrpcksumcmpcpdudffilefsckfuserlnlslsattrlsofmkdirmountmvpwdrmrmdirsplittouch

Správa procesů

atchrootcrontabexitkillkillallnicepgreppidofpkillpspstreesleeptimetopwaitwatch

Správa uživatelů a prostředí

envfingeridlognamemesgpasswdsusudounameuptimewwallwhowhoamiwrite

Zpracování textu

awkcommcsplitcutdiffedexfmtheadiconvjoinlessmorepatchpastereadsedsorttactailteetruniqwcxargs

Programování vshellu

aliasbasenameechoexprfalseprintftesttrueunset

Síťová komunikace
Hledání
Ostatní

bannerbccaldateddlooklpmansizeyes

Portály:Svobodný software
Citováno z „https://cs.wikipedia.org/w/index.php?title=Diff&oldid=25110697
Kategorie:
Skrytá kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp