Ինչպե՞ս համեմատել ֆայլերն ըստ բովանդակության Windows-ի կամ Linux-ի: Տեսողական համեմատության և կոնֆլիկտների միաձուլման գործիքների ակնարկ Ֆայլերի համեմատությունը ըստ չափի Linux-ի

Երկու կամ ավելի ֆայլեր համեմատելու համար Linux-ն ունի diff հրամանը: Այն կարող է համեմատել ինչպես առանձին ֆայլեր, այնպես էլ գրացուցակներ: Դիտարկենք շարահյուսությունը, տարբերակները diff հրամաններև օգտագործման որոշ օրինակներ:

diff հրամանի շարահյուսություն

Diff հրամանն ունի հետևյալ շարահյուսությունը.

Տարբեր [ընտրանքներ] ֆայլեր-կամ գրացուցակներ

Մենք նշում ենք տարբերակներ և սնվում երկու կամ ավելի ֆայլերում կամ գրացուցակներում, որոնք պետք է համեմատենք:

diff հրամանի ընտրանքներ

Դիտարկենք diff հրամանի հիմնական տարբերակները: Ես կքննարկեմ միայն այն տարբերակները, որոնք ես ինքս ամենից հաճախ օգտագործում եմ:

անտեսել փոփոխությունները, որոնք կապված են տեքստում ներդիրի նիշ ավելացնելու հետ:
անտեսել բացատների ավելացման հետ կապված փոփոխությունները:
անտեսել բացատների և ներդիրների ավելացման հետ կապված փոփոխությունները:
անտեսել նոր դատարկ տողերը.
-p (կամ - ցույց տալ-c-ֆունկցիան)ցույց տալ C լեզվի ֆունկցիայի անունը, որում հայտնաբերվել են փոփոխությունները:
-y (կամ --կողք կողքի)ցուցադրել արդյունքները երկու սյունակում:
Թերթիր դիրեկտորիաները ռեկուրսիվ կերպով:
-X ՖԱՅԼԲացառեք որոնման ֆայլերը, որոնց անունները համապատասխանում են FILE ֆայլի օրինաչափություններին:
-d (կամ - նվազագույն)փորձեք գտնել հնարավորինս քիչ փոփոխություններ (այսինքն՝ վերացնել կեղծ դրականները):

Diff հրամանի օգտագործման օրինակներ

Երկու տեքստային ֆայլերի համեմատություն

Երկուսի պարզ համեմատության համար տեքստային ֆայլեր myfile1 և myfile2 անուններով գործարկեք հրամանը տերմինալում.

Տարբերություն myfile1 myfile2

Հարմար է diff հրամանի ելքը վերահղել ընդլայնման diff ֆայլին: Մեծամասնությունը տեքստային խմբագիրներ Linux-ում, ինչպիսին է Gedit-ը, ճանաչեք այս ֆայլը և ընդգծեք դրա շարահյուսությունը: Համեմատության արդյունքը change.diff ֆայլին ուղղելու համար հարկավոր է օգտագործել հոսքի վերահղման նշանը (>):

Diff myfile1 myfile2 > changes.diff

Տեքստային ֆայլեր պարունակող գրացուցակների համեմատություն

Դիտարկենք երկու գրացուցակների (mydir1 և mydir2) համեմատության օրինակ, որոնք պարունակում են տեքստային ֆայլեր: Հիմնական տարբերությունն այստեղ վերը նշված օրինակից այն է, որ մենք կավելացնենք -r տարբերակը, որը նշանակում է ռեկուրսիվ կերպով անցնել դիրեկտորիաների ֆայլերը:

Diff -r mydir1 mydir2 > changes.diff

Հիմա ենթադրենք, որ այն գրացուցակները, որոնցում մենք համեմատում ենք ֆայլերը, պարունակում են շատ «աղբ», որը մենք չպետք է համեմատենք: Եկեք ստեղծենք excludeFiles ֆայլ և դրա մեջ գրենք այն օրինաչափությունները և ֆայլերի անունները, որոնք մենք չպետք է համեմատենք: Օրինակ, excludeFiles-ի բովանդակությունը կարող է նման լինել.

*.o ChangeLog* *.bak *.exe

Հիմա եկեք diff հրամանին ասենք, որ օգտագործի մեր excludeFiles ֆայլը դիրեկտորիաները համեմատելիս.

Diff -r -X excludeFiles mydir1 mydir2 > changes.diff

Այսպիսով, մենք համեմատում ենք ֆայլերը, որոնց անունները չեն համապատասխանում excludeFiles ֆայլի օրինաչափություններին, օրինակ՝ vasya.exe կամ ChangeLog12:

Համեմատության արդյունքը բարելավելու համար ավելացնենք ևս մի քանի տարբերակներ, որոնք նկարագրված են վերևում.

Diff -rwBd -X excludeFiles mydir1 mydir2 > changes.diff

Մենք համեմատում ենք ֆայլերը mydir1 և mydir2 դիրեկտորիաներում՝ անտեսելով դատարկ տողերի, բացատների, ներդիրների ավելացման հետ կապված փոփոխությունները և excludeFiles-ում օգտագործում ենք ֆայլերի անունների նախշեր՝ համեմատությունից ավելորդ ֆայլերը բացառելու համար:

Եզրակացություն

Լրացուցիչ տեղեկությունների համար diff հրամանն օգտագործելու համար ձեր Linux համակարգկարող եք ստանալ՝ գործարկելով հրամանը.

մարդ տարբեր

Կան նաև ծրագրեր, որոնք թույլ են տալիս համեմատել ֆայլերը՝ օգտագործելով GUI. Օրինակ՝ Meld ծրագիրը, որը տեսողականորեն ցույց է տալիս, թե որտեղ և ինչ է փոխվել ֆայլերում։

), դրանց համեմատությունները, ինչպես նաև GUI հաճախորդների համեմատությունները նրանց համար: Քննարկումներ եղան նաև git-ի և mercurial-ի հետ աշխատելու IDE հավելումների մասին։ Բայց գործնականում տեղեկություն չկարտեսողական համեմատության և կոնֆլիկտների լուծման միաձուլման գործիքների մասին:

Ես վերջերս «ցատկեցի» mercurial-ից (որը դեռ ավելի հարմար և տրամաբանական եմ համարում) դեպի git, քանի որ ինձ հետաքրքրող նախագծերի ճնշող մեծամասնությունը օգտագործում է git-ը և հոսթվում է github-ում։ Այս առումով հարց առաջացավ վերանայել գործիքների զինանոցը, մասնավորապես հարցը գործիքի ընտրությունտեսողական համեմատություն և միաձուլում (տարբերում և միաձուլում): Հաբրեի մասին տեղեկատվության պակասը լրացնելու համար ես որոշեցի գրել այս մինի ակնարկը։ Ինչպես ասում են՝ տաք հետապնդման մեջ:

Կտրվածքի տակ կգտնեք նաև Git կարգավորումների օրինակներ՝ Windows-ում DiffMerge-ի և WinMerge-ի հետ օգտագործելու համար: Կարծում եմ՝ դա շատ ժամանակ կխնայի։

Անուն Առանձնահատկություններ Հարթակ

KDiff3

Git և WinMerge

1) Ավելացնել գրացուցակում c:/git/libexec/git-core/mergetools/
winmerge ֆայլը հետևյալ բովանդակությամբ.

Diff_cmd () ( "c:/Program Files (x86)/WinMerge/WinMergeU.exe" \ "$LOCAL" "$REMOTE" >/dev/null 2>&1 ) merge_cmd () ( "c:/Program Files (x86 ) )/WinMerge/WinMergeU.exe" \ "$PWD/$LOCAL" "$PWD/$REMOTE" "$PWD/$MERGED" >/dev/null 2>&1 կարգավիճակ=$?)
Երբ Git-ը չի կարողանում ավտոմատ կերպով միաձուլել փոփոխությունները, առաջանում է միաձուլման կոնֆլիկտ, և միաձուլման նշիչները ավելացվում են հակասող ֆայլին (<<<<<<<, =======, и >>>>>>>): Դրանք անհրաժեշտ են հակամարտությունը լուծելու համար՝ օգտագործելով երրորդ կողմի գործիքները:
Դիտարկենք ֆայլը readme.txtորը գոյանում է ճյուղերի միաձուլման արդյունքում վարպետ և նորվերը նշված օրինակում.

<<<<<<< HEAD master str ======= new str >>>>>>> նոր
Մենք կարող ենք բացել կոնֆլիկտի ֆայլը WinMerge-ի միջոցով՝ հակամարտությունը լուծելու համար:

Սա կբացի երկկողմանի միաձուլման գործիքը.

Ելնելով նկարագրված տրամաբանությունից՝ մենք կվերագրենք միաձուլման հրամանը merge_cmdհետևյալ կերպ.
merge_cmd () ( "c:/Program Files (x86)/WinMerge/WinMergeU.exe" \ "$MERGED" >/dev/null 2>&1 status=$? )
Ըստ էության, երկու տարբերակներն էլ համարժեք են։

2) Խմբագրել .gitconfig
tool=winmerge cmd="winmerge" tool=winmerge cmd="winmerge" trustExitCode=false keepBackup=false
Վերջին տողը չեղարկում է պահուստային ֆայլերի պահպանումը պահեստի գրացուցակում:

3) Եկեք կոնֆլիկտ ստեղծենք երկու ճյուղերի միաձուլման ժամանակ (տես օրինակ՝ օգտագործելով DiffMerge):
git difftool master new // համեմատել երկու ճյուղ

Մասնաճյուղերի միաձուլման ժամանակ կոնֆլիկտը լուծելու համար օգտագործեք հրամանը
git միաձուլման գործիք

Վեբ վարպետները կամ կայքի սեփականատերերը հաճախ պետք է համեմատեն երկու ֆայլեր ըստ բովանդակության: Այս հոդվածը ցույց կտա ձեզ, թե ինչպես կարելի է համեմատել երկու ֆայլ: Տեքստային ֆայլերի և սկրիպտների (html, css, php և այլն) համեմատման համար ինձ հայտնի բոլոր մեթոդները նկարագրված են այստեղ:

Մեթոդ 1 Միաձուլել

միաձուլվել- գրաֆիկական գործիք տարբերություններ ստանալու և երկու ֆայլ, երկու գրացուցակ միավորելու համար: Meld-ը տեսողական ֆայլերի և գրացուցակների համեմատման և միաձուլման գործիք է Linux-ի համար: Meld-ը կենտրոնացած է հիմնականում մշակողների վրա: Այնուամենայնիվ, այն կարող է օգտակար լինել ցանկացած օգտագործողի համար, ով կարիք ունի լավ գործիքհամեմատել ֆայլերը և գրացուցակները:

Meld-ում դուք կարող եք համեմատել երկու կամ երեք ֆայլ, կամ երկու կամ երեք գրացուցակ: Դուք կարող եք դիտել ձեր աշխատանքային օրինակը հայտնի տարբերակների կառավարման համակարգերից, ինչպիսիք են CVS, Subversion, Bazaar-NG և Mercurial: Մելդը ներկայացրեց մեծամասնությանը Linux բաշխումներ(Ubuntu, Suse, Fedora և այլն), և առկա է նրանց հիմնական պահոցներում:

# aptitude install meld

Մեթոդ 2. Համեմատելով WinMerge-ում երկու ֆայլերի բովանդակությունը:

WinMerge անվճար ծրագիրը թույլ է տալիս համեմատել ոչ միայն ֆայլերի բովանդակությունը, այլև համեմատել ամբողջ թղթապանակների պարունակությունը: WinMerge-ը Windows-ի համար բաց կոդով տարբերակման և միաձուլման գործիք է: WinMerge-ը կարող է համեմատել և՛ ֆայլերը, և՛ թղթապանակները՝ ցուցադրելով տարբերությունները տեսողական տեքստի ձևի մեջ, որը հեշտ է հասկանալ և մշակել:

Տեղադրվելուց հետո բացեք ցանկի տարրը «Ֆայլ» - «Բաց»: Ընտրեք ֆայլեր՝ համեմատելու համար: Դա անելու համար սեղմեք «Թերթել» կոճակը և ընտրեք ֆայլը: Ֆայլերը ընտրելուց հետո սեղմեք «OK» կոճակը:

Դուք կարող եք նաև խմբագրել ֆայլերը WinMerge-ում: Համեմատության պատուհանը փակելուց հետո ծրագիրը ձեզ կհուշի պահպանել ֆայլերի փոփոխությունները:

Մեթոդ 3. տարբեր

տարբերություն- ֆայլերի համեմատման ծրագիր, որը ցույց է տալիս երկու ֆայլերի միջև եղած տարբերությունը:

    Գրացուցակները համեմատելու համար օգտագործեք այս հրամանը՝ $ diff -qr< current-directory> < backup-directory>

Մեթոդ 4 Համեմատեք

Kompare - ցուցադրում է ֆայլերի միջև եղած տարբերությունները: Կարող է համեմատել ֆայլերի կամ գրացուցակների բովանդակությունը, ինչպես նաև ստեղծել, ցուցադրել և կիրառել կարկատել ֆայլեր: Kompare-ը գրաֆիկական տարբերությունների օգտակար ծրագիր է, որը թույլ է տալիս գտնել տարբերություններ ֆայլերում, ինչպես նաև միավորել դրանք: Գրված է Qt-ով և նախատեսված է հիմնականում KDE-ի համար: Ահա նրա հիմնական հատկանիշները.

    Աջակցություն բազմաթիվ տարբեր ձևաչափերի համար;

    Աջակցեք համեմատությանը linux ֆայլև գրացուցակներ;

    Աջակցություն տարբեր ֆայլեր դիտելու համար;

    Կարգավորելի ինտերֆեյս;

    Ստեղծեք և կիրառեք patches ֆայլերի վրա:

Մեթոդ 5. Համեմատեք ֆայլերը Total Commander-ում

AT Ընդհանուր հրամանատարկա ֆայլերը ըստ բովանդակության համեմատելու գործիք, որտեղ դուք կարող եք ոչ միայն համեմատել բովանդակությունը, այլև խմբագրել այն և պատճենել այն մի ֆայլից մյուսը:

Total Commander-ը գործարկելուց հետո - վահանակներից մեկում ընտրեք (Insert key) առաջին ֆայլը համեմատության համար - երկրորդ վահանակում բացեք թղթապանակը երկրորդ ֆայլով և դրեք կուրսորը դրա վրա: Համեմատության համար անվանում ենք ծրագիրը՝ «Ֆայլեր → Համեմատել ըստ բովանդակության»։

Ֆայլում փոփոխություններ կատարելու համար պարզապես սեղմեք «Խմբագրել» կոճակը: Ծրագիրն ունի պատճենելու և հետ գլորելու, կոդավորումը որոնելու և փոխելու գործառույթներ։ Եթե ​​դուք փոփոխություններ եք կատարել ֆայլում, ապա համեմատության պատուհանը փակելուց հետո ձեզ կառաջարկվի պահպանել փոփոխությունները:

Մեթոդ 6. Ֆայլերի համեմատություն Notepad++-ում

    Աջակցվող օպերացիոն համակարգեր՝ Windows, կարող են աշխատել Linux-ով

Notepad++-ը չի կարող համեմատել ֆայլերը: Notepad ++-ում այս գործառույթի հայտնվելու համար անհրաժեշտ է տեղադրել «Համեմատել» հավելվածը:

Գործարկեք խմբագրիչը - գնացեք ընտրացանկի տարրը «Plugins» - «Plugin Manager» - «Show Plugin Manager»: Նոր պատուհանում ընտրեք «Համեմատել» հավելվածը և սեղմեք «Տեղադրել» կոճակը:

Փլագինը տեղադրելուց հետո բացեք երկու ֆայլերը և ընտրեք «Plugins» - «Compare» - «Compare (Alt + D)» ընտրացանկը: Ֆայլի համեմատության արդյունքը կներկայացվի առանձին վահանակներում: Այն տողերը, որտեղ հայտնաբերվում են տարբերություններ, կողքին կունենան նախազգուշական նշան:

Մեթոդ 7. Համեմատեք ֆայլերը՝ օգտագործելով Windows հրամանի տողը

Համեմատություն օգտագործելով հրամանի տող Windows-ը (cmd.exe) թույլ չի տալիս խմբագրել ֆայլերը, բայց դուք կարող եք պարզապես համեմատել ֆայլերի բովանդակությունը՝ օգտագործելով այս մեթոդը:

Հրաման կանչելու համար Windows տողերգնացեք «Սկսել» - «Բոլոր ծրագրերը» - «Աքսեսուարներ» - «Հրամանի տող» կամ սեղմեք «Windows + R», մուտքագրեք cmd և սեղմեք Enter:

Հրամանի տողում մուտքագրեք հրամանը.

fc / N ճանապարհ դեպի առաջին ֆայլի ուղի դեպի երկրորդ ֆայլ

Անկախ նրանից, թե ինչ համակարգով ես պետք է խառնվեմ կոդի հետ, վաղ թե ուշ այն չափազանց թանկ է դառնում համեմատելու համար տարբեր տարբերակներաղբյուրները։ Ահա հեշտ անվճար կոմունալ ծառայություններ Linux-ի, Windows-ի և Mac-ի տակ գտնվող ֆայլերի տարբերությունները գտնելու համար: Գործարկման ընդհանուր ձևաչափն է file1 ֆայլ 2.

Windows-ում ֆայլերի բովանդակությունը (և դիրեկտորիաները, որոնք երբեմն անօգուտ չեն) համեմատելու խնդիրը հիանալի աշխատանք է կատարում՝ WinMerge: Լույս. Կապված չէ որևէ IDE-ի հետ: Գրված է Qt-ով և խաչաձեւ հարթակով - պետք է նաև աշխատի nix-ով: Բացի ֆայլերից, այն կարող է նաև համեմատել գրացուցակների բովանդակությունը (ներառյալ regexp դիմակների վրա հիմնվածները): Դուք կարող եք ավելացնել լրացուցիչ հավելումներ:

WinMerge-ը միջպլատֆորմային ֆայլերի համեմատման ծրագիր է և ավելին

Mac - opendiff. Ներկայացնում է առանձին Xcode բաղադրիչ: Բավականին ինքնուրույն գործարկվում է հրամանի տողից: Տարբերությունները ընդգծված են գունատ մոխրագույնով, բայց, ի դեպ, այն կարող է սլաքներով ցույց տալ, թե որտեղ է ավելացվել: Կարող է կատարել միաձուլում (key -merge): Եթե, բացի համեմատվող ֆայլերից, -ancestor ստեղնից հետո նշեք ընդհանուր նախնի ֆայլ, ապա համեմատությունը կկատարվի դրա հետ։ Թղթապանակները համեմատելու ունակություն:

opendiff կոմունալ - անվճար գործիք Mac համակարգի ֆայլերի համեմատություն

Linux - . Հասանելի է բոլոր հարթակներում (Windows, Mac, Linux) այն պատճառով, որ գրված է նաև Qt-ով։ Կարող է համեմատել մինչև երեք ֆայլ կամ գրացուցակ: Աջակցում է փոփոխությունները միաձուլելու կարողությունը՝ կոնֆլիկտների ձեռքով լուծման համար խմբագրման աջակցությամբ:

kdiff3 օգտակար - համեմատում է երկու ֆայլ

ԹԱՐՄԱՑՈՒՄ 18.10.2013

Եթե ​​դուք գործարկում եք Gnom-ը nix-ով, ապա meld-ը հիանալի ընտրություն է: Ինտեգրում հանրահայտ տարբերակների կառավարման համակարգերի հետ (Git, Subversion և այլն), միաձուլման գործիքներ՝ ավտոմատ միաձուլում, խմբագրում ընթացիկ տարբերությունների արագ հայտնաբերմամբ, շարահյուսական ընդգծում: Կան նավահանգիստներ OS X Windows-ի համար:

Դե, ծայրահեղ դեպքում (եթե երրորդ կողմի որևէ բան չկարողանաք դնել) - հրամանի տողի տակից անհրապույր տարբերությունը օգնության է հասնում (այն նախապես տեղադրված է nix-ի նման համակարգերում, ներառյալ Mac-երը և Solaris-ը): Ճկուն. Կարգավորումների հետ կարող եք խաղալ երկար ժամանակ և հաճույքով, որպեսզի կարողանաք ցուցադրել տարբերությունները՝ հիմնված դիմակի վրա (-F), համեմատություն ստանալ սովորական երկու սյունակներում (ստեղն՝ կողք կողքի) և այլն։ Ծավալուն անծանոթ ֆայլերի համար ես նախընտրում եմ ելքը «համատեքստային» ձևաչափով, երբ ցուցադրվում են ոչ միայն փոխված տողերը, այլև հարակիցները:

Երկուից ավելի ֆայլեր համեմատելու համար diff3-ը կարող է տեղին լինել: