Patch
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.