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


Այս էջում

  1. Տեղադրեք diff3
  2. Diff3 Օգտագործում

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

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

Տեղադրեք diff3

Հավանաբար, diff3 գործիքը լռելյայն կտեղադրվի ձեր համակարգում՝ առնվազն Ubuntu-ում: Բայց եթե դա այդպես չէ, ապա մի անհանգստացեք, քանի որ դուք հեշտությամբ կարող եք դա անել՝ տեղադրելով GNU Diffutils փաթեթը: Ձեր համակարգում փաթեթը ներբեռնելու և տեղադրելու հրահանգների համար այցելեք այստեղ:

Diff3 Օգտագործում

Քանի որ diff3 օգտակար ծրագիրը համեմատում է երեք ֆայլ, ուստի մեր օգտագործման օրինակների համար մենք պետք է վերցնենք երեք ֆայլ, որոնք մենք կփոխանցենք որպես մուտքագրում գործիքին:

Ահա ֆայլը 1:

This is line1 with some change
This is line2
This is line3

Ահա ֆայլը 2.

This is line1
This is line2
This is line3

Եվ hԱհա ֆայլը3:

This is line1
This is line2
This is line3

Ակնհայտ է, որ եթե մենք տեսնում ենք այս երեք ֆայլերի բովանդակությունը, միակ փոփոխությունը առաջին ֆայլի առաջին տողում է: Այսպիսով, հիմա տեսնենք, թե ինչպես է diff3-ը հաղորդում այս փոփոխությունը:

Ահա թե ինչպես կարող ենք օգտագործել diff3 այս դեպքում.

diff3 file1 file2 file3

Եվ ահա դրա արտադրած արդյունքը.

====1
1:1c
 This is line1 with some change
2:1c
3:1c
 This is line1

Դուք կարող եք ընկալել արդյունքը հետևյալ կերպ.

  • Առաջին տողը, որը սկսվում է չորս «=» նշաններով և ավարտվում «1» թվով, ասում է, որ փոփոխությունը առաջին ֆայլում է:
  • Հաջորդ տողում առաջին «1» նշանակում է file1; «1c» կետից հետո «նշանակում է, որ առաջին տողը պարունակում է»: Փաստացի գիծը ցուցադրվում է ելքի հաջորդ տողում:
  • Նմանապես, 2:1c և 3:1c-ը նշանակում է «fil2-ի և file3-ի առաջին տողը պարունակում է»: Եվ քանի որ տողի բովանդակությունը երկու ֆայլերում էլ նույնն է, իրական տողը ցուցադրվում է միայն մեկ անգամ՝ ելքի վերջում:

Ամեն ինչ ավելի պարզ դարձնելու համար եկեք վերցնենք մեկ այլ դեպք, երբ փոփոխությունը file3-ում է:

Ահա ֆայլը 1:

This is line1
This is line2
This is line3

Ահա ֆայլը 2.

This is line1
This is line2
This is line3

Եվ hԱհա ֆայլը3:

This is line1 with some change
This is line2
This is line3

Հրամանը մնում է նույնը.

diff3 file1 file2 file3

Եվ ահա արդյունքը.

====3
1:1c
2:1c
 This is line1
3:1c
 This is line1 with some change

Այսպիսով, ելքը, այս դեպքում, կարող է ընկալվել որպես.

  • Փոփոխությունը file3-ում է
  • Թե՛ file1-ը, և թե՛ file2-ը պարունակում են «Սա տող1 է»՝ որպես իրենց առաջին տող
  • Մինչդեռ file3-ը որպես առաջին տող պարունակում է «Սա տող1 է որոշ փոփոխություններով»:

Այս ամենը վերաբերում էր այն բանին, թե ինչպես են diff3 հաշվետվությունները փոխվում տողերում: Այժմ տեսնենք, թե ինչպես է diff3-ն իրեն պահում, եթե ֆայլերից մեկը լրացուցիչ տող է պարունակում.

Մինչ file1-ը և file2-ը մնում են նույնը, ահա file3-ը.

This is line1
This is line2
This is line3
This is line4

Ինչպես պարզ է իր բովանդակությունից, file3-ն այժմ պարունակում է լրացուցիչ տող վերջում:

Եկեք գործարկենք նույն diff3 հրամանը.

diff3 file1 file2 file3

Եվ ահա այն արդյունքը, որն արտադրում է հրամանը.

====3
1:3a
2:3a
3:4c
 This is line4

Արդյունքը սկսվում է նրանով, որ փոփոխությունը file3-ում է: Փոփոխությունը file3-ի չորրորդ տողում է (3:4c), որն ընդհանրապես նոր տող է, երբ համեմատվում է file1-ի և file2-ի հետ:

Այն, ինչ մենք մինչ այժմ քննարկել ենք, մի քանի պարզ դեպքեր էին: Վերցնենք մի քանի փոքր-ինչ բարդ իրավիճակներ: Օրինակ՝ համարեք file1, file2 և file3, որոնք պարունակում են հետևյալը.

This is line1
This is line2 with some change
This is line3
This is line1
This is line2
This is line3
This is line1
This is line2
This is line3 with some change

Այսպիսով, այժմ և՛ file1-ը, և՛ file2-ը պարունակում են փոփոխություններ, և դա նույնպես տարբեր տողերում: Տեսնենք, թե ինչ է արտադրում diff3-ն այս դեպքում.

====
1:2,3c
 This is line2 with some change
 This is line3
2:2,3c
 This is line2
 This is line3
3:2,3c
 This is line2
 This is line3 with some change

Ինչպես տեսնում եք վերևում ներկայացված ելքում, առաջին տողը որևէ թիվ չի պարունակում: Դա պայմանավորված է նրանով, որ այժմ փոփոխություններ են պարունակում ոչ թե մեկ, այլ մի քանի ֆայլ: Diff3-ի համար բոլոր երեք ֆայլերի 2-րդ և 3-րդ տողերն այժմ տարբեր են: Դա է պատճառը, որ երկու կետից հետո մեկ թվի փոխարեն (:), ելքը այժմ պարունակում է միջակայք՝ «2,3», որը նշանակում է տող 2-ից մինչև տող 3:

Բերենք ևս մեկ օրինակ. Ենթադրենք այս անգամ երեք ֆայլերը պարունակում են հետևյալ տեղեկատվությունը. 

This is line1
This is line2
This is line3
This is line4
This is line1
This is line2
This is line3
This is line1
This is line2
This is line3
This is line4
This is line5

Այժմ, երբ diff հրամանը գործարկվում է, այն արտադրում է հետևյալ ելքը.

====
1:4c
 This is line4
2:3a
3:4,5c
 This is line4
 This is line5

Այստեղ, եթե փորձեք հասկանալ, ապա diff3 հրամանն ասում է, որ փոփոխությունները 3-րդ տողից հետո են բոլոր երեք ֆայլերում։ Թեև file1-ը պարունակում է «This is line4» տողը որպես իր չորրորդ տող, file3 պարունակում է «This is line4» և «This is line5» որպես իր չորրորդ և հինգերորդ տողերը, համապատասխանաբար: Մյուս կողմից, file2-ն ունի ընդամենը 3 տող: 

Այսպիսով, դա վերաբերում էր diff3-ի վրա հիմնական աշխատանքին: Ինչքան արժե, ահա թե ինչ է ասվում գործիքի մասին պաշտոնական փաստաթղթերում. «Դուք կարող եք օգտագործել diff3 հրամանը՝ երեք ֆայլերի միջև տարբերությունները ցույց տալու համար: Երբ երկու հոգի ունեն կատարել է անկախ փոփոխություններ ընդհանուր բնօրինակում, diff3 կարող է հաղորդել բնօրինակի և երկու փոփոխված տարբերակների միջև եղած տարբերությունները և կարող է արտադրել միաձուլված ֆայլ, որը պարունակում է երկու անձանց փոփոխությունները և նախազգուշացումներ հակամարտությունների մասին»:

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

Մենք պարզապես քերել ենք այստեղի մակերեսը, Diff3-ն ի վիճակի է շատ ավելին անել: Օրինակ, ինչպես նաև նշվում է պաշտոնական փաստաթղթերում, դուք կարող եք այն օգտագործել նաև փոփոխությունները միաձուլելու համար: Բացի այդ, կան հրամանի տողերի բազմաթիվ տարբերակներ, որոնք թույլ են տալիս հարմարեցնել հրամանի ելքը, ինչպես նաև օգտվել որոշ այլ հնարավորություններից, որոնք այն առաջարկում է: Ամեն ինչ կա տղամարդու էջում, անցեք դրա միջով: Կարող եք նաև ստուգել մեր sdiff հրամանի ձեռնարկը