Next: , Previous: , Up: Comparing and Merging Files   [Contents][Index]

15 Invoking patch

Normally patch is invoked like this:

patch <patchfile

The full format for invoking patch is:

patch options[origfile [patchfile]]

You can also specify where to read the patch from with the -i patchfile or --input=patchfile option. If you do not specify patchfile, or if patchfile is -, patch reads the patch (that is, the diff output) from the standard input.

If you do not specify an input file on the command line, patch tries to intuit from the leading text (any text in the patch that comes before the diff output) which file to edit. See Multiple Patches in a File.

By default, patch replaces the original input file with the patched version, possibly after renaming the original file into a backup file (see Backup File Names, for a description of how patch names backup files). You can also specify where to put the output with the -o file or --output=file option; however, do not use this option if file is one of the input files.


15.1 Options to patch

Here is a summary of all of the options that GNU patch accepts. See GNU patch and Traditional patch, for which of these options are safe to use in older versions of patch.

Multiple single-letter options that do not take an argument can be combined into a single command line argument with only one dash.

-b
--backup

Back up the original contents of each file, even if backups would normally not be made. See Backup Files.

-B prefix
--prefix=prefix

Prepend prefix to backup file names. See Backup File Names.

--backup-if-mismatch

Back up the original contents of each file if the patch does not exactly match the file. This is the default behavior when not conforming to POSIX. See Backup Files.

--binary

Read and write all files in binary mode, except for standard output and /dev/tty. This option has no effect on POSIX-conforming systems like GNU/Linux. On systems where this option makes a difference, the patch should be generated by ‘diff -a --binary’. See Binary Files and Forcing Text Comparisons.

-c
--context

Interpret the patch file as a context diff. See Selecting the patch Input Format.

-d directory
--directory=directory

Make directory directory the current directory for interpreting both file names in the patch file, and file names given as arguments to other options. See Applying Patches in Other Directories.

-D name
--ifdef=name

Make merged if-then-else output using name. See Merging Files with If-then-else.

--dry-run

Print the results of applying the patches without actually changing any files. See Predicting what patch will do.

-e
--ed

Interpret the patch file as an ed script. See Selecting the patch Input Format.

-E
--remove-empty-files

Remove output files that are empty after the patches have been applied. See Creating and Removing Files.

-f
--force

Assume that the user knows exactly what he or she is doing, and do not ask any questions. See Messages and Questions from patch.

-F lines
--fuzz=lines

Set the maximum fuzz factor to lines. See Helping patch Find Inexact Matches.

-g num
--get=num

If num is positive, get input files from a revision control system as necessary; if zero, do not get the files; if negative, ask the user whether to get the files. See Revision Control.

--help

Output a summary of usage and then exit.

-i patchfile
--input=patchfile

Read the patch from patchfile rather than from standard input. See Options to patch.

-l
--ignore-white-space

Let any sequence of blanks (spaces or tabs) in the patch file match any sequence of blanks in the input file. See Applying Patches with Changed White Space.

-n
--normal

Interpret the patch file as a normal diff. See Selecting the patch Input Format.

-N
--forward

Ignore patches that patch thinks are reversed or already applied. See also -R. See Applying Reversed Patches.

--no-backup-if-mismatch

Do not back up the original contents of files. This is the default behavior when conforming to POSIX. See Backup Files.

-o file
--output=file

Use file as the output file name. See Options to patch.

-pnumber
--strip=number

Set the file name strip count to number. See Applying Patches in Other Directories.

--posix

Conform to POSIX, as if the POSIXLY_CORRECT environment variable had been set. See patch and the POSIX Standard.

--quoting-style=word

Use style word to quote names in diagnostics, as if the QUOTING_STYLE environment variable had been set to word. See patch Quoting Style.

-r reject-file
--reject-file=reject-file

Use reject-file as the reject file name. See Reject File Names.

-R
--reverse

Assume that this patch was created with the old and new files swapped. See Applying Reversed Patches.

-s
--quiet
--silent

Work silently unless an error occurs. See Messages and Questions from patch.

-t
--batch

Do not ask any questions. See Messages and Questions from patch.

-T
--set-time

Set the modification and access times of patched files from timestamps given in context diff headers, assuming that the context diff headers use local time. See Updating Timestamps on Patched Files.

-u
--unified

Interpret the patch file as a unified diff. See Selecting the patch Input Format.

-v
--version

Output version information and then exit.

-V backup-style
--version=control=backup-style

Select the naming convention for backup file names. See Backup File Names.

--verbose

Print more diagnostics than usual. See Messages and Questions from patch.

-x number
--debug=number

Set internal debugging flags. Of interest only to patch patchers.

-Y prefix
--basename-prefix=prefix

Prepend prefix to base names of backup files. See Backup File Names.

-z suffix
--suffix=suffix

Use suffix as the backup extension instead of ‘.orig’ or ‘~’. See Backup File Names.

-Z
--set-utc

Set the modification and access times of patched files from timestamps given in context diff headers, assuming that the context diff headers use UTC. See Updating Timestamps on Patched Files.


Next: , Previous: , Up: Comparing and Merging Files   [Contents][Index]