| --normal | | output a normal diff (the default) |
-s | --report-identical-files | | report when two files are the same |
-c , -C | --context | [NUM] | output NUM (default 3) lines of copied context |
-u , -U | --unified | [NUM] | output NUM (default 3) lines of unified context |
-e | --ed | | output an ed script |
-n | --rcs | | output an RCS format diff |
-W | --width=NUM | | output at most NUM (default 130) print columns |
| --left-column | | output only the left column of common lines |
| --suppress-common-lines | | do not output common lines |
-p | --show-c-function | | show which C function each change is in |
-F | --show-function-line= | RE | show the most recent line matching RE |
| --label | LABEL | use LABEL instead of file name and timestamp (can be repeated) |
-t | --expand-tabs | | expand tabs to spaces in output |
-T | --initial-tab | | make tabs line up by prepending a tab |
| --tabsize= | NUM | tab stops every NUM (default 8) print columns |
| --suppress-blank-empty | | suppress space or tab before empty output lines |
-l | --paginate | | pass output through 'pr' to paginate it |
| --no-dereference | | don't follow symbolic links |
-N | --new-file | | treat absent files as empty |
| --unidirectional-new-file | | treat absent first files as empty |
| --ignore-file-name-case | | ignore case when comparing file names |
| --no-ignore-file-name-case | | consider case when comparing file names |
-x | --exclude=PAT | | exclude files that match PAT |
-X | --exclude-from= | FILE | exclude files that match any pattern in FILE |
-S | --starting-file=FILE | | start with FILE when comparing directories |
| --from-file= | FILE1 | compare FILE1 to all operands; FILE1 can be a directory |
| --to-file= | FILE2 | compare all operands to FILE2; FILE2 can be a directory |
-i | --ignore-case | | ignore case differences in file contents |
-E | --ignore-tab-expansion | | ignore changes due to tab expansion |
-b | --ignore-space-change | | ignore changes in the amount of white space |
-w | --ignore-all-space | | ignore all white space |
-B | --ignore-blank-lines | | ignore changes where lines are all blank |
-I | --ignore-matching-lines= | RE | ignore changes where all lines match RE |
-a | --text | | treat all files as text |
| --strip-trailing-cr | | strip trailing carriage return on input |
-D | --ifdef=NAME | | output merged file with '#ifdef NAME' diffs |
| --GTYPE-group-format= | GFMT | format GTYPE input groups with GFMT |
| --line-format= | LFMT | format all input lines with LFMT |
| --LTYPE-line-format= | LFMT | |
-d | --minimal | | try hard to find a smaller set of changes |
| --horizon-lines= | NUM | keep NUM lines of the common prefix and suffix |
| --speed-large-files | | assume large files and many scattered small changes |
| --color= | [WHEN] | colorize the output; WHEN can be never , always or auto (the default) |
| --palette= | PALETTE | the colors to use when --color is active; PALETTE is a colon-separated list of terminfo capabilities |
| --help | | display this help and exit |
-v | --version | | output version information and exit |
LTYPE format (LFMT)
These format options provide fine-grained control over the output of diff, generalizing -D
/--ifdef
.
LTYPE
is old
, new
or unchanged
.
GTYPE
is LTYPE
or 'changed'.
GFMT
(only) may contain:
%< | lines from FILE1 |
%> | lines from FILE2 |
%= | lines common to FILE1 and FILE2 |
%[-][WIDTH][.[PREC]]{doxX}LETTER | printf-style spec for LETTER |
LETTERs are as follows for new group, lower case for old group:
F | first line number |
L | last line number |
N | number of lines = L-F+1 |
E | F-1 |
M | L+1 |
%(A=B?T:E)
if A equals B then T else E
LFMT
(only) may contain:
%L | contents of line |
%l | contents of line, excluding any trailing newline |
%[-][WIDTH][.[PREC]]{doxX}n | printf-style spec for input line number |
Both GFMT and LFMT may contain:
%% | % |
%c'C' | the single character C |
%c'\OOO' | the character with octal code OOO |
C | the character C (other characters represent themselves) |