Како применити закрпу на датотеку (и креирати закрпе) у Линуку

Команда Линук закрпа вам омогућава да брзо и безбедно пренесете промене из једног скупа датотека у други скуп датотека. Научите како да користите закрпу на једноставан начин.

Команде закрпе и дифф

Замислите да имате текстуалну датотеку на рачунару. Добијате измењену верзију те текстуалне датотеке од неког другог. Како брзо преносити све промене из модификоване датотеке у оригиналну датотеку? Ту ступају у игру патцх и дифф. патцх и дифф се налазе у Линук-у и другим оперативним системима сличним Уник-у, као што је мацОС.

Команда дифф испитује две различите верзије датотеке и наводи разлике међу њима. Разлике се могу сачувати у датотеци која се зове датотека закрпе.

Команда патцх може прочитати датотеку закрпе и користити садржај као скуп упутстава. Пратећи та упутства, промене у модификованој датотеци су реплицирано у оригиналу фајл.

Сада замислите да се тај процес дешава са читавим директоријумом текстуалних датотека. Све у једном потезу. То је моћ закрпа.

Понекад вам се не шаљу измењене датотеке. Све што добијате је датотека закрпе. Зашто слати на десетине датотека унаоколо када можете послати једну датотеку или поставити једну датотеку за једноставно преузимање?

Шта радите са датотеком закрпе да бисте заправо закрпали своје датотеке? Осим што је то скоро да је уверљиво, то је и добро питање. Провест ћемо вас кроз то у овом чланку.

Команду патцх најчешће користе људи који раде са датотекама изворног кода софтвера, али она подједнако добро функционише са било којим скупом текстуалних датотека без обзира на њихову намену, изворни код или не.

  Како избрисати портфолио у Иахоо Финанце-у

Наш пример сценарија

У овом сценарију, налазимо се у директоријуму који се зове рад који садржи још два директоријума. Један се зове радни, а други најновији. Радни директоријум садржи скуп датотека изворног кода. Најновији директоријум садржи најновију верзију тих датотека изворног кода, од којих су неке измењене.

Да бисмо били сигурни, радни директоријум је копија тренутне верзије текстуалних датотека. То није једина њихова копија.

Проналажење разлика између две верзије датотеке

Команда дифф проналази разлике између две датотеке. Његова подразумевана радња је да наведе измењене линије у прозору терминала.

Једна датотека се зове сленг.ц. Упоредићемо верзију у радном директоријуму са оном у последњем директоријуму.

Опција -у (унифиед) говори дифф-у да такође наведе неке од неизмењених линија текста пре и после сваког од промењених одељака. Ове линије се називају контекстне линије. Они помажу команди закрпе да прецизно лоцира где се мора извршити промена у оригиналној датотеци.

Дајемо називе датотека тако да дифф зна које датотеке треба упоредити. Прво је наведена оригинална датотека, а затим измењена датотека. Ово је наредба коју издајемо за дифф:

diff -u working/slang.c latest/slang.c

дифф производи излазну листу која показује разлике између датотека. Да су датотеке идентичне, излаз уопште не би био наведен. Видети ову врсту излаза из дифф-а потврђује да постоје разлике између две верзије датотеке и да је потребно закрпе оригиналне датотеке.

Прављење датотеке закрпе

Да бисте ухватили те разлике у датотеци закрпе, користите следећу команду. То је иста команда као горе, са излазом из дифф-а преусмереним у датотеку под називом сленг.патцх.

diff -u working/slang.c latest/slang.c > slang.patch

дифф -у воркинг/сланг.ц ​​најновије/сланг.ц ​​> сленг.патцх у прозору терминала” видтх=”646″ хеигхт=”57″ онлоад=”пагеспеед.лазиЛоадИмагес.лоадИфВисиблеАндМаибеБеацон(тхис);”  онеррор=”тхис.онеррор=нулл;пагеспеед.лазиЛоадИмагес.лоадИфВисиблеАндМаибеБеацон(тхис);”></п> <п>Име датотеке закрпе је произвољно.  Можете то назвати како год желите.  Давање екстензије „.патцх” је добра идеја;  међутим, јасно показује о којој врсти датотеке се ради.</п> <п>Да би закрпа деловала на датотеку закрпе и изменила радну/сланг.ц ​​датотеку, користите следећу команду.  Опција -у (унифиед) омогућава закрпи до знања да датотека закрпе садржи обједињене контекстне линије.  Другим речима, користили смо -у опцију са дифф, тако да користимо опцију -у са закрпом.</п> <п>патцх -у воркинг.сланг.ц ​​-и сланг.патцх</п> <п> <имг срц=

  8 начина да поправите немогућност слања поруке многим непосланим мултимедијалним порукама

Ако све прође како треба, постоји један ред излаза који говори да закрпа закрпа датотеку.

Прављење резервне копије оригиналне датотеке

Можемо упутити закрпу да направи резервну копију закрпаних датотека пре него што се промене коришћењем опције -б (резервна копија). Опција -и (унос) говори закрпи име датотеке закрпе коју треба користити:

patch -u -b working.slang.c -i slang.patch

Фајл је закрпљен као и раније, без видљиве разлике у излазу. Међутим, ако погледате у радну фасциклу, видећете да је креирана датотека под називом сленг.ц.ориг. Ознаке датума и времена датотека показују да је сленг.ц.ориг оригинална датотека, а сленг.ц нова датотека креирана закрпом.

Коришћење дифф Витх Дирецториес

Можемо користити дифф да креирамо датотеку закрпе која садржи све разлике између датотека у два директоријума. Затим можемо користити ту датотеку закрпе са закрпом да бисмо те разлике применили на датотеке у радној фасцикли помоћу једне наредбе.

Опције које ћемо користити са дифф су опција -у (обједињени контекст) коју смо раније користили, -р (рекурзивна) опција да би дифф гледао у било који поддиректоријум и опција -Н (нова датотека).

Опција -Н говори дифф-у како да рукује датотекама у најновијем директоријуму које нису у радном директоријуму. Приморава дифф да стави упутства у датотеку закрпе тако да та закрпа креира датотеке које су присутне у последњем директоријуму, али недостају у радном директоријуму.

Можете да групишете опције тако да користе једну цртицу (-).

Имајте на уму да дајемо само имена директоријума, не кажемо дифф-у да погледа одређене датотеке:

diff -ruN working/ latest/ > slang.patch

дифф -руН ворк/ латест/ > сленг.патцх” видтх=”646″ хеигхт=”77″ онлоад=”пагеспеед.лазиЛоадИмагес.лоадИфВисиблеАндМаибеБеацон(тхис);”  онеррор=”тхис.онеррор=нулл;пагеспеед.лазиЛоадИмагес.лоадИфВисиблеАндМаибеБеацон(тхис);”></п> <х2 роле=Завиривање у датотеку закрпе

  ПлаиСтатион Плус у односу на Ксбок Гаме Пасс: шта је боље?

Хајде да брзо погледамо датотеку закрпе. Мање ћемо користити да погледамо његов садржај.

Врх датотеке показује разлике између две верзије сленг.ц.

Померајући се даље кроз датотеку закрпе, видимо да она затим описује промене у другој датотеци која се зове струцтс.х. Ово потврђује да датотека закрпе дефинитивно садржи разлике између различитих верзија више датотека.

Погледај пре него што скочиш

Закрпање велике колекције датотека може бити мало узнемирујуће, па ћемо користити опцију –дри-рун да проверимо да ли је све у реду пре него што кренемо и посветимо се променама.

Опција –дри-рун говори закрпи да уради све осим стварне измене датотека. патцх ће извршити све своје провере пре летења датотека и ако наиђе на било какве проблеме, пријављује их. У сваком случају, ниједна датотека се не мења.

Ако нема пријављених проблема, можемо поновити команду без опције –дри-рун и поуздано закрпити наше датотеке.

Опција -д (директориј) говори закрпи на ком директоријуму да ради.

Имајте на уму да не користимо опцију -и (унос) да бисмо рекли закрпи која датотека закрпе садржи упутства из дифф. Уместо тога, преусмеравамо датотеку закрпе у закрпу са <. wp_automatic_readability="17.5">

patch --dry-run -ruN -d working 

Out of the entire directory, diff found two files to patch. The instructions regarding the modifications for those two files have been checked by patch , and no problems have been reported.

Pre-flight checks are OK; we’re ready for take-off.

Patching a Directory

To genuinely apply the patches to the files we use the previous command without the --dry-run option.

patch -ruN -d working 

This time each line of output doesn’t start with “checking,” each line starts with “patching.”

And no problems are reported. We can compile our source code, and we’ll be on the latest version of the software.

Settle Your Differences

This is by far the easiest and safest way to use patch. Copy your target files to a folder and patch that folder. Copy them back when you’re happy that the patching process completed error free.