Technical Notes

Manpages - diff.1

NAME

diff - compare files line by line

SYNOPSIS

diff [/OPTION/]… FILES

DESCRIPTION

Compare FILES line by line.

Mandatory arguments to long options are mandatory for short options too.

–normal
output a normal diff (the default)
-q, –brief
report only when files differ
-s, –report-identical-files
report when two files are the same
-c, -C NUM, –context[=/NUM/]
output NUM (default 3) lines of copied context
-u, -U NUM, –unified[=/NUM/]
output NUM (default 3) lines of unified context
-e, –ed
output an ed script
-n, –rcs
output an RCS format diff
-y, –side-by-side
output in two columns
-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
-r, –recursive
recursively compare any subdirectories found
–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
-Z, –ignore-trailing-space
ignore white space at line end
-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/
format LTYPE input lines with 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)
-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/]
color output; WHEN is 'never', 'always', or 'auto'; plain –color means –color='auto'
*–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

FILES are 'FILE1 FILE2' or 'DIR1 DIR2' or 'DIR FILE' or 'FILE DIR'. If –from-file or –to-file is given, there are no restrictions on FILE(s). If a FILE is '-', read standard input. Exit status is 0 if inputs are the same, 1 if different, 2 if trouble.

AUTHOR

Written by Paul Eggert, Mike Haertel, David Hayes, Richard Stallman, and Len Tower.

REPORTING BUGS

Report bugs to: [email protected]
GNU diffutils home page: <https://www.gnu.org/software/diffutils/>
General help using GNU software: <https://www.gnu.org/gethelp/>

COPYRIGHT

Copyright © 2023 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

SEE ALSO

*wdiff*(1), *cmp*(1), *diff3*(1), *sdiff*(1), *patch*(1)

The full documentation for diff is maintained as a Texinfo manual. If the info and diff programs are properly installed at your site, the command

info diff

should give you access to the complete manual.