Patch

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

patch - Applicera ändringar från en patchfil

Kommandot `patch` används för att applicera ändringar från en patchfil till originalfiler.

Syntax

patch [ALTERNATIV] [ORIGINALFIL [PATCHFIL]]

Beskrivning

Kommandot `patch` läser en patchfil som innehåller skillnaderna mellan två versioner av en fil och applicerar dessa ändringar på originalfilen för att uppdatera den. Patchfiler skapas vanligtvis med `diff`-kommandot och används för att överföra ändringar mellan utvecklare.

Alternativ

Kommandot `patch` stöder flera alternativ som kan användas för att justera dess beteende:

  • -b, --backup - Skapa säkerhetskopior av filer som kommer att ändras.
  • --backup-if-mismatch - Skapa säkerhetskopior endast om patchen inte exakt matchar.
  • --binary - Behandla filer som binära.
  • -c, --context - Behandla patchfilen som en kontextdiff.
  • -d, --directory=KATALOG - Ändra till katalog KATALOG innan patchning.
  • -D, --ifdef=NAME - Generera #ifdef NAME / #endif block för varje förändring.
  • -e, --ed - Behandla patchfilen som en ed-skript.
  • -E, --remove-empty-files - Ta bort tomma filer efter patchning.
  • -f, --force - Tvinga applicering av patchen oavsett försök att matcha.
  • -F, --fuzz=NUM - Tillåt NUM linjers osäkerhet vid matchning.
  • -i, --input=FIL - Läs patchen från filen FIL.
  • -l, --ignore-whitespace - Ignorera vita tecken vid matchning.
  • --merge - Använd tredjeparts merge-strategi.
  • -N, --forward - Applicera endast patchen om originalet inte redan är patchat.
  • -o, --output=FIL - Skriv den patchade filen till FIL.
  • -p, --strip=NUM - Ta bort NUM ledande katalogkomponenter från filnamnen i patchen.
  • -r, --reject-file=FIL - Skriv bortkastade patchar till FIL.
  • -R, --reverse - Applicera patchen i omvänd ordning.
  • --remove-empty-files - Ta bort tomma filer efter patchning.
  • -s, --quiet - Tyst körning, visa inte meddelanden om applicerade patchar.
  • -t, --batch - Kör i batch-läge utan att fråga om interaktion.
  • -u, --unified - Behandla patchfilen som en unified diff.
  • -v, --version - Visa versionsinformation och avsluta.
  • -V, --version-control=METOD - Välj metod för säkerhetskopiering.
  • -x, --debug - Visa felsökningsinformation.
  • -Y, --only-verify - Verifiera patchen utan att applicera den.
  • -z, --suffix=SUFFIX - Använd SUFFIX för säkerhetskopior.
  • --help - Visa hjälpmeddelande och avsluta.

Exempel

Här är några praktiska exempel som visar hur du kan använda `patch`-kommandot:

  • För att applicera en patch på en fil:

patch < patchfil.diff

  • För att applicera en patch med en specifik originalfil:

patch originalfil < patchfil.diff

  • För att applicera en patch i omvänd ordning:

patch -R < patchfil.diff

  • För att ignorera vita tecken vid matchning:

patch -l < patchfil.diff

  • För att ta bort ledande katalogkomponenter från filnamnen i patchen:

patch -p1 < patchfil.diff

Skillnader mellan macOS och Linux

Det finns några skillnader att tänka på när man använder `patch` på macOS jämfört med Linux:

  • Tillgänglighet: `patch`-kommandot är tillgängligt på både macOS och Linux. På båda plattformarna är `patch` en del av standardverktygen.
  • Alternativ: De flesta alternativ som finns på `patch` är tillgängliga på både macOS och Linux, men det rekommenderas att konsultera `man`-sidan på respektive plattform för att bekräfta tillgängliga alternativ och eventuella skillnader.

Exempel på att använda `patch` på macOS:

  • För att applicera en patch på en fil:

patch < patchfil.diff

Det är alltid bra att konsultera `man`-sidan för `patch` på din specifika plattform för att se vilka alternativ och funktioner som är tillgängliga och hur de används.

Felsökning

Om du får ett felmeddelande när du använder `patch`, kontrollera följande:

  • Att du använder rätt syntax och alternativ för ditt specifika kommando.
  • Att patchfilen och originalfilen du försöker använda existerar och är tillgängliga.
  • Att du har nödvändiga behörigheter för att ändra filerna.

Se även

  • diff - Jämför filskillnader rad för rad.
  • cmp - Jämför två filer byte för byte.
  • comm - Jämför två sorterade filer rad för rad.

Källor