Kuidas rakendada plaastrit failile (ja luua plaastreid) Linuxis

Linux plaaster käsuga saate muudatused ühest failikomplektist teise kiiresti ja ohutult üle kanda. Õppige, kuidas seda kasutada plaaster lihtsal viisil.

Paranduse ja diffi käsud

Kujutage ette, et teie arvutis on tekstifail. Saate selle tekstifaili muudetud versiooni kelleltki teiselt. Kuidas saate kõik muudatused muudetud failist kiiresti algsesse faili üle kanda? See on koht plaaster ja dif mängu tulema. plaaster ja dif on Linuxis ja teistes Unixi-laadsetes operatsioonisüsteemides, näiteks macOS-is.

The dif käsk uurib faili kahte erinevat versiooni ja loetleb nende vahelised erinevused. Erinevusi saab salvestada faili, mida nimetatakse plaasterfailiks.

Theplaaster käsuga saab lugeda patch-faili ja kasutada sisu juhiste komplektina. Neid juhiseid järgides muudetakse muudetud failis tehtud muudatusi algfailis.

Kujutage nüüd ette, et see protsess toimub terve tekstifailide kataloogiga. Kõik ühe korraga. See on võimu plaaster.

Mõnikord ei saadeta teile muudetud faile. Kõik, mis teile saadetakse, on plaasterfail. Miks saata kümneid faile ümmarguseks, kui saate ühe faili saata või ühe faili hõlpsaks allalaadimiseks postitada?

Mida te plaasterfailiga teete, et oma faile tegelikult lappida? Peale selle, et see on peaaegu keele keerutaja, on see ka hea küsimus. Tutvustame teid selles artiklis.

The plaaster käsku kasutavad kõige sagedamini inimesed, kes töötavad tarkvara lähtekoodifailidega, kuid see töötab võrdselt hästi kõigi tekstifailide komplektidega, olenemata nende otstarbest, lähtekoodist või mitte.

SEOTUD:Kuidas võrrelda kahte tekstifaili Linuxi terminalis

Meie stsenaarium

Selle stsenaariumi korral oleme kataloogis nimega töö, mis sisaldab veel kahte kataloogi. Ühte nimetatakse töötamine, ja teist nimetatakse hiljemalt. Töökataloog sisaldab lähtekoodifailide komplekti. Viimases kataloogis on nende lähtekoodifailide uusim versioon, millest mõnda on muudetud.

Ohutuse tagamiseks on töökataloog tekstifailide praeguse versiooni koopia. See pole nende ainus eksemplar.

Faili kahe versiooni erinevuste leidmine

The dif käsk leiab erinevused kahe faili vahel. Selle vaiketoiming on terminaliaknas loetletud muudetud read.

Üks fail nimetatakse släng.c. Võrdleme töökataloogi versiooni uusima kataloogi versiooniga.

The -u (ühtne) variant ütleb dif loetleda ka mõned muutmata tekstiread iga muudetud sektsiooni eel ja järel. Neid ridu nimetatakse kontekstiliinideks. Nad aitavadplaaster käsk leidke täpselt koht, kus tuleb algses failis muudatusi teha.

Pakume failide nimed nii dif teab, milliseid faile võrrelda. Esmalt on loetletud algne fail ja seejärel muudetud fail. See on käsk, mille me välja anname dif:

diff -u töötav / släng.c uusim / släng.c

dif toodab väljundi loendi, mis näitab failide erinevusi. Kui failid oleksid identsed, ei oleks väljundit üldse loetletud. Seda tüüpi väljundi nägemine lehelt dif kinnitab, et kahe failiversiooni vahel on erinevusi ja et algne fail vajab lappimist.

Plaastri FILE tegemine

Nende erinevuste parandamiseks plaasterfailis kasutage järgmist käsku. See on sama käsk nagu ülal, väljundiga dif suunatakse faili nimega slang.patch.

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

Plaasterfaili nimi on meelevaldne. Võite seda nimetada mis iganes soovite. "Patch" laienduse andmine on hea mõte; aga kuna see teeb selgeks, mis tüüpi fail see on.

Tegemaplaaster toimige plaasterfaili järgi ja muutke faili working / slang.c, kasutage järgmist käsku. The -u (ühtne) valik võimaldab plaaster tea, et plaasterfail sisaldab ühtseid kontekstiridu. Teisisõnu, kasutasime diff-ga valikut -u, seega kasutame -u valikuga plaaster.

plaaster -u töötab.lang.c -i släng.lapp

Kui kõik läheb hästi, on teile üks väljundrida plaaster lappib faili.

Algse FIle varundamine

Me saame juhendada plaaster parandatud failide varukoopia tegemiseks enne nende muutmist, kasutades-b (varukoopia) valik. The -i (sisestus) suvand ütleb plaaster kasutatava plaasterfaili nime:

 plaaster -u -b töötab.lang.c -i släng.lapp 

Fail on lappitud nagu varemgi, väljundis pole nähtavaid erinevusi. Kui aga uurite töökataloogi, näete, et see fail nimega slang.c.orig on loodud. Failide kuupäeva ja kellaaja templid näitavad, et slang.c.orig on algne fail ja slang.c on uus fail, mille on loonud plaaster.

Diffi kasutamine kataloogidega

Me saame kasutada dif plaasterfaili loomiseks, mis sisaldab kõiki erinevusi kahe kataloogi failide vahel. Seejärel saame seda plaasterfaili kasutada plaaster et neid erinevusi rakendataks töökaustas olevatele failidele ühe käsuga.

Valikud, mida kasutame dif on -u (ühtne kontekst) variant, mida oleme varem kasutanud, -r (rekursiivne) võimalus teha dif uurige kõiki alamkatalooge ja -N (uus fail) valik.

The -N variant ütleb dif kuidas käsitseda uusimas kataloogis olevaid faile, mis pole töökataloogis. See sunnib dif panna juhiseid plaasterfaili nii, etplaaster loob failid, mis asuvad viimases kataloogis, kuid puuduvad töökataloogist.

Valikud saab kokku panna nii, et need kasutaksid ühte sidekriipsu (-).

Pange tähele, et pakume ainult kataloogide nimesid, me ei ütle seda dif konkreetsete failide vaatamiseks:

diff -ruN working / latest /> slang.patch

Patch File'i sisse piilumine

Vaatame kiirelt plaasterfaili. Kasutame vähem selle sisu vaadata.

Faili ülaosas on toodud slängi.c kahe versiooni erinevused.

Paigutusfaili allapoole kerides näeme, et see kirjeldab siis muudatusi teises failis nimega structs.h. See kinnitab, et plaasterfail sisaldab kindlasti mitme faili erinevate versioonide erinevusi.

Vaadake enne hüppamist

Suure failikogumi paigutamine võib olla veidi ärritav, nii et kasutame faili --kuivaga võimalus kontrollida, kas kõik on korras, enne kui astume sammu ja pühendume muudatuste tegemisele.

The --kuivaga variant ütleb plaaster teha kõike peale failide reaalse muutmise. plaaster teostab failides kõik lennueelsed kontrollid ja kui ilmneb mingeid probleeme, teatab ta neist. Mõlemal juhul pole ühtegi faili muudetud.

Kui probleemidest ei teatata, võime käsku korrata ilma --kuivaga ja plaaster meie faile enesekindlalt.

The -d (kataloogi) võimalus öelda plaaster millises kataloogis töötada.

Pange tähele, et oleme mitte kasutades -i (sisend) võimalus öelda plaaster milline plaasterfail sisaldab juhiseid dif. Selle asemel suuname plaasterfaili ümber plaaster koos <.

plaaster --dry-run -ruN -d töötab <slang.patch

Kogu kataloogist välja dif leidis kaks lappimiseks mõeldud faili. Nende kahe faili muudatusi käsitlevad juhised on kontrollitud plaaster ja probleemidest pole teatatud.

Lennueelsed kontrollid on korras; oleme stardiks valmis.

Kataloogi parandamine

Paigutuste tõeliseks rakendamiseks failides kasutame eelmist käsku ilma --kuivaga valik.

plaaster -ruN -d töötab <släng.lapp

Seekord ei alga iga väljundi rida kontrollimisega, iga rida algab lappimisega.

Ja probleemidest ei teatata. Saame koostada oma lähtekoodi ja kasutame tarkvara uusimat versiooni.

Lahendage oma erinevused

See on ülekaalukalt kõige lihtsam ja ohutum viis kasutada plaaster. Kopeerige oma sihtfailid kausta ja plaaster see kaust. Kopeerige need tagasi, kui olete rahul, et lappimisprotsess sai veatult lõpule viidud.