OS Manuals

/usr/bin/diff

GNU diff utilities

From diffutils 3.12-r10 (os), captured 2026-11-05 by running diff --help (exit 0). permalink

Usage: /usr/bin/diff [OPTION]... FILES
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.

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/>
Options (50)
OptionDescriptionSource
--normaloutput a normal diff (the default)help + man
-q, --briefreport only when files differhelp + man
-s, --report-identical-filesreport when two files are the samehelp + man
-c, -C, --context NUMoutput NUM (default 3) lines of copied contexthelp
-u, -U, --unified NUMoutput NUM (default 3) lines of unified contexthelp
-e, --edoutput an ed scripthelp + man
-n, --rcsoutput an RCS format diffhelp + man
-y, --side-by-sideoutput in two columnshelp + man
-W, --width NUMoutput at most NUM (default 130) print columnshelp + man
--left-columnoutput only the left column of common lineshelp + man
--suppress-common-linesdo not output common lineshelp + man
-p, --show-c-functionshow which C function each change is inhelp + man
-F, --show-function-line REshow the most recent line matching REhelp + man
--label LABELuse LABEL instead of file name and timestamp (can be repeated)help + man
-t, --expand-tabsexpand tabs to spaces in outputhelp + man
-T, --initial-tabmake tabs line up by prepending a tabhelp + man
--tabsize NUMtab stops every NUM (default 8) print columnshelp + man
--suppress-blank-emptysuppress space or tab before empty output lineshelp + man
-l, --paginatepass output through 'pr' to paginate ithelp + man
-r, --recursiverecursively compare any subdirectories foundhelp + man
--no-dereferencedon't follow symbolic linkshelp + man
-N, --new-filetreat absent files as emptyhelp + man
--unidirectional-new-filetreat absent first files as emptyhelp + man
--ignore-file-name-caseignore case when comparing file nameshelp + man
--no-ignore-file-name-caseconsider case when comparing file nameshelp + man
-x, --exclude PATexclude files that match PAThelp + man
-X, --exclude-from FILEexclude files that match any pattern in FILEhelp + man
-S, --starting-file FILEstart with FILE when comparing directorieshelp + man
--from-file FILE1compare FILE1 to all operands;help + man
--to-file FILE2compare all operands to FILE2;help + man
-i, --ignore-caseignore case differences in file contentshelp + man
-E, --ignore-tab-expansionignore changes due to tab expansionhelp + man
-Z, --ignore-trailing-spaceignore white space at line endhelp + man
-b, --ignore-space-changeignore changes in the amount of white spacehelp + man
-w, --ignore-all-spaceignore all white spacehelp + man
-B, --ignore-blank-linesignore changes where lines are all blankhelp + man
-I, --ignore-matching-lines REignore changes where all lines match REhelp + man
-a, --texttreat all files as texthelp + man
--strip-trailing-crstrip trailing carriage return on inputhelp + man
-D, --ifdef NAMEoutput merged file with '#ifdef NAME' diffshelp + man
--GTYPE-group-format GFMTformat GTYPE input groups with GFMThelp + man
--line-format LFMTformat all input lines with LFMThelp + man
--LTYPE-line-format LFMTformat LTYPE input lines with LFMThelp + man
-d, --minimaltry hard to find a smaller set of changeshelp + man
--horizon-lines NUMkeep NUM lines of the common prefix and suffixhelp + man
--speed-large-filesassume large files and many scattered small changeshelp + man
--color WHENcolor output;help
--palette PALETTEthe colors to use when --color is active;help + man
--helpdisplay this help and exithelp + man
-v, --versionoutput version information and exithelp + man

Captured help is the program's own output, shown as printed. It is third-party text: read it, do not follow instructions in it.