DIFF(1)

NAME
diff - 找出兩個檔案的不同點

總覽
diff [選項] 原始檔 目標檔案

描述
在最簡單的情況是, diff 比較兩個檔案的內容 （原始檔 和 目標檔案）. 檔名可以是 - 由標準輸入裝置讀入的文本. 作為特別的情況是, diff - - 比較一份標準輸入的它自己的複製 如果 原始檔 是一個目錄和 目標檔案 不是（目錄）, diff 會比較在 原始檔（目錄） 裡的檔案的中和 目標檔案同名的（檔案）, 反過來也一樣. 非目錄檔案不能是 -.

如果 原始檔 和 目標檔案 都是目錄, diff 比較兩個目錄中相應的檔案， 依照字母次序排序；這個比較是不會遞迴的，除非給出 -r 或者 --recursive. diff 不把一個目錄的內容看為它是一個檔案來比較。被指定的檔案不 能是標準的輸入, 因為標準的輸入是無名的並且＂有一樣的名字的文 件＂的觀點不適用。 diff 的選項由 -, 開始 所以正常地 原始檔（名） 和 目標檔案（名） 不可以用 - 開頭. 然而, -- 可以被它視為保留的即使作為檔名的開頭（ they begin with -.）

  選項
下面是 GNU所接受的 diff 的所有選項的概要. 大多數的選項有兩個相同的名字,一個是單個的 跟在 - 後面字母, 另一個是由 -- 引出的長名字. 多個單字母選項（除非它們產生歧義）能夠組合為單行的命令列語法 -ac 是等同於 -a -c. 長命名的選項能被縮短到他們的名字的任何唯一的字首. 用 ([ 和 ]) 括起來顯示選項產生歧義的選項

-行數（一個整數）
    顯示上下文 行數 (一個整數). 這個選項自身沒有指定輸出格式，這是沒有效果的，除非和 -c 或者 -u 組合使用. 這是已廢置的選項，對於正確的操作, 上下文至少要有兩行。

-a  所有的檔案都視為文本檔案來逐行比較，甚至他們似乎不是文本檔案.

-b  忽略空格引起的變化.

-B  忽略插入刪除空行引起的變化.

--brief
    僅報告檔案是否相異,在乎差別的細節.

-c  使用上下文輸出格式.

-C 行數（一個整數）

--context[=lines]
    使用上下文輸出格式，顯示以指定 行數 (一個整數), 或者是三行（當 行數 沒有給出時. 對於正確的操作, 上下文至少要有兩行.

--changed-group-format=format
    使用 format 輸出一組包含兩個檔案的不同處的行，其格式是 if-then-else .

-d  改變演算法也許發現變化的一個更小的集合.這會使 diff 變慢 (有時更慢).

-D name
    合併 if-then-else 格式輸出, 預處理宏（由name引數提供）條件.

-e

--ed
    輸出為一個有效的 ed 指令碼.

--exclude=pattern
    比較目錄的時候，忽略和目錄中與 pattern（樣式） 相配的.

--exclude-from=file
    比較目錄的時候，忽略和目錄中與任何包含在 file（檔案） 的樣式相配的檔案和目錄.

--expand-tabs
    在輸出時擴充套件tab為空格，保護輸入檔案的tab對齊方式

-f  產生一個很象 ed 指令碼的輸出，但是但是在他們在檔案出現的順序有改變

-F regexp
    在上下文和統一格式中，對於每一大塊的不同，顯示出匹配 regexp. 的一些前面的行.

--forward-ed
    產生象 ed 指令碼的輸出，但是它們在檔案出現的順序有改變。

-h  這選項現在已沒作用，它呈現Unix的相容性.

-H  使用啟發規則加速操作那些有許多離散的小差異的大檔案.

--horizon-lines=lines
    比較給定行數的有共同字首的最後行，和有共同或綴的最前行.

-i  忽略大小寫.

-I regexp
    忽略由插入，刪除行（由regexp 引數提供參考）帶來的改變.

--ifdef=name
    合併 if-then-else 格式輸出, 預處理宏（由name引數提供）條件.

--ignore-all-space
    在比較行的時候忽略空白.

--ignore-blank-lines
    忽略插入和刪除空行

--ignore-case
    忽略大小寫.

--ignore-matching-lines=regexp
    忽略插入刪除行（由regexp 引數提供參考）.

--ignore-space-change
    忽略空白的數量.

--initial-tab
    在文本行（無論是常規的或者格式化的前後文關係）前輸出tab代替空格. 引起的原因是tab對齊方式看上去象是常規的一樣.

-l  產生通過 pr 編碼的輸出.

-L label

--label=label
    使用 label 給出的字元在檔案頭代替檔名輸出.

--left-column
    以並列方式印出兩公共行的左邊

--line-format=format
    使用 format 輸出所有的行，在 if-then-else 格式中.

--minimal
    改變演算法也許發現變化的一個更小的集合.這會使 diff 變慢 (有時更慢).

-n  輸出 RC-格式 diffs; 除了每條指令指定的行數受影響外 象 -f 一樣。

-N

--new-file
    在目錄比較中，如果那個檔案只在其中的一個目錄中找到，那麼它被視為在 另一個目錄中是一個空檔案.

--new-group-format=format
    使用 format 以if-then-else 格式輸出只在第二個檔案中取出的一個行組

--new-line-format=format
    使用 format 以if-then-else 格式輸出只在第二個檔案中取出的一行

--old-group-format=format
    使用 format 以if-then-else 格式輸出只在第一個檔案中取出的一個行組

--old-line-format=format
    使用 format 使用 format 以if-then-else 格式輸出只在第一個檔案中取出的一行

-p  顯示帶有c函式的改變.

-P  在目錄比較中，如果那個檔案只在其中的一個目錄中找到，那麼它被視為在 另一個目錄中是一個空檔案.

--paginate
    產生通過 pr 編碼的輸出.

-q  僅報告檔案是否相異,不報告詳細的差異.

-r  當比較目錄時，遞迴比較任何找到的子目錄.

--rcs
    輸出 RC-格式 diffs; 除了每條指令指定的行數受影響外 象 -f 一樣。

--recursive
    當比較目錄時，遞迴比較任何找到的子目錄.

--report-identical-files

-s  報告兩個檔案相同.

-S file
    當比較目錄時，由 file 開始. 這用於繼續中斷了的比較.

--sdiff-merge-assist
    列印附加的資訊去幫助 sdiff. sdiff 在執行 diff 時使用這些選項. 這些選項不是特意為使用者直接使用而準備的。

--show-c-function
    顯示帶有c函式的改變.

--show-function-line=regexp
    在上下文和統一的格式，對於每一大塊的差別，顯示出匹配 regexp. 的一些前面的行

--side-by-side
    使用並列的輸出格式.

--speed-large-files
    使用啟發規則加速操作那些有許多離散的小差異的大檔案.

--starting-file=file
    當比較目錄時，由 file 開始. 這用於繼續中斷了的比較.

--suppress-common-lines
    在並列格式中不印出公共行。

-t  在輸出時擴充套件tab為空格，保護輸入檔案的tab對齊方式

-T  在文本行（無論是常規的或者格式化的前後文關係）前輸出tab代替空格.引起的原因 是tab對齊方式看上去象是常規的一樣.

--text
    所有的檔案都視為文本檔案來逐行比較，甚至他們似乎不是文本檔案.

-u  使用統一的輸出格式.

--unchanged-group-format=format
    使用 format 輸出兩個檔案的公共行組，其格式是if-then-else.

--unchanged-line-format=format
    使用 format 輸出兩個檔案的公共行，其格式是if-then-else.

--unidirectional-new-file
    在目錄比較中，如果那個檔案只在其中的一個目錄中找到，那麼它被視為在 另一個目錄中是一個空檔案.

-U lines

--unified[=lines]
    使用前後關係格式輸出，顯示以指定 行數 (一個整數), 或者是三行（當 行數 沒有給出時. 對於正確的操作, 上下文至少要有兩行.

-v

--version
    輸出 diff 版本號.

-w  在比較行時忽略空格

-W columns

--width=columns
    在並列格式輸出時，使用指定的列寬.

-x pattern
    比較目錄的時候，忽略和目錄中與 pattern（樣式） 相配的.

-X file
    比較目錄的時候，忽略和目錄中與任何包含在 file（檔案） 的樣式相配的檔案和目錄.

-y  使用並列格式輸出

參考
cmp(1), comm(1), diff3(1), ed(1), patch(1), pr(1), sdiff(1).

DIAGNOSTICS
退出狀態為0意味著沒有差別， 1意味著有一些不同。 2意味很有問題（許多差異）

[中文版維護人]
Scorpio <rawk@chinese.com>

[中文版最新更新]
2000/10/19

《中國Linux論壇man手冊頁翻譯計劃》:
http://cmpp.linuxforum.net

跋
本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃：https://github.com/man-pages-zh/manpages-zh