Diff, programe și utilități

În calcul, diff este un utilitar de comparare a fișierelor care scoate diferența dintre două fișiere. Acest program afișează modificările linii de linie făcute în fișier (pentru fișierele text). Aplicațiile moderne acceptă și fișiere binare. Ieșirea utilitarului este denumită "diff", sau, mai frecvent, patch-uri. deoarece poate fi aplicat cu programul de patch-uri. Ieșirea unor utilitare similare de comparare a fișierelor este adesea numită "diff".







Utilitarul diff a fost dezvoltat la începutul anilor 1970 pentru sistemul de operare Unix, care a fost rezultatul muncii laboratoarelor ATT Bell Labs din Murray Hill, New Jersey. Versiunea finală, distribuită cu versiunea a 5-a a Unix-ului în 1974, a fost complet scrisă de Douglas McIlroy.

Lucrarea diff se bazează pe găsirea celei mai mari subsecvente comune (cea mai lungă comună cea mai lungă în engleză, problema LCS). De exemplu, aveți două secvențe de elemente:

și doriți să găsiți cea mai lungă secvență de elemente care este reprezentată în ambele secvențe în aceeași ordine. Aceasta înseamnă că doriți să găsiți o nouă secvență care poate fi obținută din prima secvență prin ștergerea unor elemente sau din a doua secvență prin ștergerea altor elemente. În acest caz, această secvență va fi







După obținerea celei mai mari secvențe comune, rămâne doar un pas mic pentru a obține o ieșire asemănătoare diff:

diff este apelat din linia de comandă cu numele a două fișiere ca argumente: diff originalnew. Ieșirea comenzii este modificările care trebuie făcute în fișierul sursă original pentru a obține un nou fișier nou. Dacă versiunea originală și cea nouă sunt directoare, diff va fi aplicat automat fiecărui fișier care există în ambele directoare. Toate exemplele din acest articol utilizează următoarele două fișiere, originale și noi:

Comanda nouă originală diff produce următoarea ieșire diferențială normală:

În acest format de ieșire tradițional, se adaugă o (din engleză add), d este șters. cu - schimbat. Înainte de literele a, d sau c sunt numerele de linie ale fișierului sursă, după ele numerele de linie ale fișierului final. Fiecare linie care a fost adăugată, ștersă sau modificată este precedată de paranteze unghiulare.

În mod implicit, numerele de linie pentru fișierele sursă și destinație nu sunt specificate. Liniile care sunt mutate sunt afișate ca adăugate la noua lor locație și eliminate din locația lor din trecut.

În formatul context, liniile modificate sunt afișate împreună cu liniile neafectate înainte și după fragmentul modificat. Introducerea oricărui număr de rânduri neafectate oferă contextul pentru patch-uri. Context. constând din șiruri neafectate servește drept referință pentru determinarea poziției fragmentului modificat în fișierul țintă, chiar dacă numerele liniilor care sunt modificate în fișierele sursă și destinație nu se potrivesc.

Producția diff -c originale noi:







Articole similare

Trimiteți-le prietenilor: