diff
(1)compare files line by line
Options
50--normaloutput a normal diff (the default)
-q--briefreport only when files differ
-s--report-identical-filesreport when two files are the same
-c-C--contextNUMoutput NUM (default 3) lines of copied context
-u-U--unifiedNUMoutput NUM (default 3) lines of unified context
-e--edoutput an ed script
-n--rcsoutput an RCS format diff
-y--side-by-sideoutput in two columns
-W--widthNUMoutput at most NUM (default 130) print columns
--left-columnoutput only the left column of common lines
--suppress-common-linesdo not output common lines
-p--show-c-functionshow which C function each change is in
-F--show-function-lineREshow the most recent line matching RE
--labeluse LABEL instead of file name and timestamp (can be repeated)
-t--expand-tabsexpand tabs to spaces in output
-T--initial-tabmake tabs line up by prepending a tab
--tabsizeNUMtab stops every NUM (default 8) print columns
--suppress-blank-emptysuppress space or tab before empty output lines
-l--paginatepass output through 'pr' to paginate it
-r--recursiverecursively compare any subdirectories found
--no-dereferencedon't follow symbolic links
-N--new-filetreat absent files as empty
--unidirectional-new-filetreat absent first files as empty
--ignore-file-name-caseignore case when comparing file names
--no-ignore-file-name-caseconsider case when comparing file names
-x--excludePATexclude files that match PAT
-X--exclude-fromFILEexclude files that match any pattern in FILE
-S--starting-fileFILEstart with FILE when comparing directories
--from-fileFILE1compare FILE1 to all operands; FILE1 can be a directory
--to-fileFILE2compare all operands to FILE2; FILE2 can be a directory
-i--ignore-caseignore case differences in file contents
-E--ignore-tab-expansionignore changes due to tab expansion
-Z--ignore-trailing-spaceignore white space at line end
-b--ignore-space-changeignore changes in the amount of white space
-w--ignore-all-spaceignore all white space
-B--ignore-blank-linesignore changes where lines are all blank
-I--ignore-matching-linesREignore changes where all lines match RE
-a--texttreat all files as text
--strip-trailing-crstrip trailing carriage return on input
-D--ifdefNAMEoutput merged file with '#ifdef NAME' diffs
--GTYPE-group-formatGFMTformat GTYPE input groups with GFMT
--line-formatLFMTformat all input lines with LFMT
--LTYPE-line-formatLFMTformat LTYPE input lines with LFMT
-d--minimaltry hard to find a smaller set of changes
--horizon-linesNUMkeep NUM lines of the common prefix and suffix
--speed-large-filesassume large files and many scattered small changes
--colorWHENcolor output; WHEN is 'never', 'always', or 'auto'; plain --color means --color='auto'
--palettePALETTEthe colors to use when --color is active; PALETTE is a colon-separated list of terminfo capabilities
--helpdisplay this help and exit
-v--versionoutput version information and exit
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
REPORTING BUGS
Report bugs to: bug-diffutils@gnu.org
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.