Ինչպես համեմատել և միաձուլել ֆայլերը՝ օգտագործելով diff3 հրամանը Linux-ում


diff3 հրամանը Linux-ում օգտակար գործիք է, որը համեմատում է երեք ֆայլերը և ցույց է տալիս դրանց տարբերությունները, որը հիմնականում օգտակար է ծրագրավորողների և համակարգի ադմինիստրատորների համար, ովքեր աշխատում են նույն ֆայլի բազմաթիվ տարբերակների հետ և պետք է միաձուլեն դրանք, կամ բացահայտել փոփոխությունները տարբեր տարբերակների միջև:

Այս հոդվածում մենք կանցնենք diff3 հրամանի օգտագործման հիմունքներին, դրա ընդհանուր տարբերակներին և մի քանի օրինակներին՝ հասկանալու համար, թե ինչպես է այն աշխատում Linux-ում:

Ի՞նչ է diff3 հրամանը:

diff3-ը գործիք է, որը համեմատում է երեք ֆայլ տող առ տող, բացահայտում տարբերությունները և ցուցադրում դրանք հեշտ հասկանալի ձևաչափով:

Այն կարող է օգտագործվել՝

  • Գտեք տարբերությունները երեք ֆայլերի միջև:
  • Ավտոմատ կերպով միաձուլել փոփոխությունները տարբեր ֆայլերից:
  • Կառավարեք կոնֆլիկտները, որոնք առաջանում են ֆայլերի տարբերակների միաձուլման ժամանակ:

diff3 հրամանը նման է diff հրամանին կամ sdiff հրամանին, բայց աշխատում է երեք ֆայլի փոխարեն երկուսի հետ, ինչը հատկապես օգտակար է, երբ դուք ունեք մի քանի ներդրողներ, որոնք աշխատում են նույն ֆայլի վրա, և դուք պետք է միաձուլեք դրանց փոփոխությունները մեկ տարբերակի մեջ:

Diff3 հրամանի հիմնական շարահյուսությունը

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

diff3 [options] file1 file2 file3

Վերը նշված հրամանի բացատրությունը.

  • file1. ֆայլի առաջին տարբերակը:
  • file2. ֆայլի երկրորդ տարբերակը:
  • file3. ֆայլի երրորդ տարբերակը:

Հաճախ օգտագործվող ընտրանքներ

Ստորև բերված են diff3 հրամանի հաճախ օգտագործվող տարբերակները.

  • -e. Ստեղծեք խմբագրման սցենար, որը կարող է օգտագործվել ֆայլում փոփոխություններ կիրառելու համար:
  • -m. ավտոմատ կերպով միաձուլել ֆայլերը:
  • -A. Ներառեք բոլոր փոփոխությունները բոլոր ֆայլերից:
  • -E. փորձեք միաձուլել ֆայլերը, նույնիսկ եթե կոնֆլիկտներ հայտնաբերվեն:
  • -3. Ցուցադրել միայն փոփոխությունները, որոնք տարբերվում են բոլոր երեք ֆայլերի միջև:

Գտնել տարբերություններ ֆայլերի միջև Linux-ում

Ենթադրենք, դուք ունեք երեք ֆայլ՝ file1.txt, file2.txt և file3.txt: Յուրաքանչյուր ֆայլ պարունակում է նույն բովանդակության մի փոքր այլ տարբերակ, և դուք ցանկանում եք համեմատել դրանք՝ տեսնելու, թե որտեղ են տարբերությունները:

Այս երեք ֆայլերը համեմատելու համար կարող եք օգտագործել հետևյալ հրամանը.

diff3 file1.txt file2.txt file3.txt

Ահա թե ինչ է նշանակում այս ելքը.

  • 1:2c. Սա ցույց է տալիս, որ file1.txt-ում փոփոխությունը տեղի է ունենում տող 2-ում, իսկ տող 2-ի բովանդակությունը Սա տող 2 է:
  • 2:2c. Սա ցույց է տալիս, որ file2.txt-ում փոփոխությունը տեղի է ունենում նաև տող 2-ում, սակայն այդ տողի բովանդակությունը փոփոխվել է This is modified line 2-ի: .
  • 3:2,3c. Սա ցույց է տալիս, որ file3.txt-ում փոփոխություններ կան 2-րդ և 3-րդ տողերում: Տող 2-ը մնում է նույնը (Սա տող 2-ն է): բայց տող 3-ը լրացուցիչ տող է, որը նշում է՝ սա ավելացված տող է։

Ֆայլերի միաձուլում diff3-ի հետ Linux-ում

Եթե ցանկանում եք միաձուլել երեք ֆայլերը և բոլոր փոփոխություններով ստեղծել նոր ֆայլ, կարող եք օգտագործել -m տարբերակը.

diff3 -m file1.txt file2.txt file3.txt

Սա կարտադրի միավորված բովանդակությունը կոնֆլիկտային նշիչներով, որոնք ցույց են տալիս, թե որտեղ կան հակասական փոփոխություններ:

Ահա թե ինչ է նշանակում այս ելքը.

  • <<<<<<< file1.txt. սա նշում է կոնֆլիկտի սկիզբը և ցուցադրում է տարբերակը file1.txt-ից:
  • <կոդ>||||||| file2.txt. այս տողը ցույց է տալիս file2.txt-ի բովանդակությունը (միջին ֆայլը համեմատության մեջ):
  • ======. Սա առանձնացնում է հակասական տողերը:
  • >>>>>>> file3.txt. սա նշում է տարբերակը file3.txt-ից և կոնֆլիկտի բլոկի վերջը:

Դուք կարող եք ձեռքով խմբագրել սա՝ ձեր ուզած փոփոխությունները պահպանելու համար:

Փոփոխությունների կիրառում մի քանի ֆայլից մեկի վրա՝ diff3-ով

Դուք կարող եք նաև օգտագործել diff3՝ ստեղծելու ed սկրիպտ, որը կկիրառի փոփոխությունները file2.txt և file3.txt-ից դեպի file1.txt: Դա կարելի է անել՝ օգտագործելով -e տարբերակը.

diff3 -e file1.txt file2.txt file3.txt > scriptfile

Այս հրամանը ստեղծում է scriptfile անունով ֆայլ, որը պարունակում է ստեղծված ed script-ը, որը կարող եք օգտագործել ed հրամանը scriptfile-ից file1.txt-ում կիրառելու համար: կոդը>.

ed file1.txt < scriptfile

Սա կփոփոխի file1.txt՝ համաձայն scriptfile-ում նշված փոփոխությունների, կարող եք ստուգել հետևյալ cat հրամանի միջոցով՝ տեսնելու, թե արդյոք փոփոխությունները կիրառվել են.

cat file1.txt

Սա օգտակար է, եթե ցանկանում եք ավտոմատացնել ֆայլերի միաձուլումը սկրիպտների միջոցով:

Կոնֆլիկտների լուծում diff3 Merges-ում

Միաձուլման համար diff3 օգտագործելիս կոնֆլիկտներ կարող են առաջանալ, երբ բոլոր երեք ֆայլերի միջև կան տարբերություններ նույն վայրում: Այս կոնֆլիկտները նշված են ելքի մեջ, և դուք պետք է ձեռքով լուծեք դրանք:

  • Հակամարտությունները լուծելու համար բացեք ֆայլը, որը պարունակում է կոնֆլիկտային նշաններ:
  • Խմբագրեք ֆայլը՝ անցանկալի տողերը հեռացնելու և ձեր ուզած փոփոխությունները պահպանելու համար:
  • Հակամարտությունը լուծելուց հետո պահեք ֆայլը:
Եզրակացություն

diff3 հրամանը հզոր գործիք է երեք ֆայլերը Linux-ում համեմատելու և միացնելու համար, որը հատկապես օգտակար է նույն ֆայլի բազմաթիվ տարբերակները մշակելու և փոփոխությունները միաձուլելու ժամանակ կոնֆլիկտները լուծելու համար:

Հասկանալով դրա հիմնական օգտագործումը և ընտրանքները՝ դուք կարող եք արդյունավետ կառավարել ֆայլերի տարբերակները և համագործակցել ուրիշների հետ նախագծերում: