2 つのファイル間の違いを探す
FROMFILE TOFILE
FROMFILE
と
TOFILE
である。これらのファイルのうちのどちらかは
` - '
と指定しても良い。この時はそのファイルは標準入力から読み込まれる。
FROMFILE
がディレクトリで
TOFILE
がディレクトリではない場合、
diff
はディレクトリ
FROMFILE
にある、ファイル名が
TOFILE
のファイルを比較対象にする (逆も同様)。
ディレクトリでない方の指定を
` - '
にすることはできない。
- LINES
LINES
行 (整数) 分のコンテクストを表示する。
このオプションは出力形式自体の指定は行わない。
したがって
-c や -u
オプションと一緒に用いないと、なんの効果も持たない。
このオプションは obsolete である。
patch (1)
が正しく動作するには、少なくとも 2 行のコンテクストが必要である。
-a, --text
-b, --ignore-space-change
-c
-d, --minimal
-e, --ed
-f, --forward-ed
-h
-i, --ignore-case
-l, --paginate
-n, --rcs
-p, --show-c-function
-q, --brief
-r, --recursive
-s, --report-identical-files
-t, --expand-tabs
-u
-w, --ignore-all-space
-x PATTERN , --exclude= PATTERN
PATTERN
にマッチするファイルやサブディレクトリを無視する。
-y, --side-by-side
-B, --ignore-blank-lines
-C LINES , --context[= LINES ]
LINES
行 (整数値) のコンテクストを表示する。
LINES
が与えられなければ 3 行表示する。
patch
が正しく動作するためには、
少なくとも 2 行のコンテクストが必要であることが多い。
-D NAME , --ifdef= NAME
NAME
を用いる。
-E, --ignore-tab-expansion
-F REGEXP , --show-function-line= REGEXP
REGEXP
にマッチした最後の行の一部を表示する。
-H, --speed-large-files
-I REGEXP , --ignore-matching-lines= REGEXP
REGEXP
にマッチするような行を挿入・削除するだけの変更を無視する。
-L LABEL , --label= LABEL
LABEL
を用いる。
短縮形式 -L は推奨されなくなった。
-N, --new-file
-P, --unidirectional-new-file
-S FILE , --starting-file= FILE
FILE
から始める。中断した比較を続行する際に利用できる。
-T, --initial-tab
-U LINES , --unified [ = LINES ]
LINES
行 (整数値) のコンテクストを表示する。
LINES
が与えられなければ 3 行表示する。
patch
が正しく動作するためには、
少なくとも 2 行のコンテクストが必要であることが多い。
-W COLUMNS , --width= COLUMNS
COLUMNS
にする。
-X FILE , --exclude-from= FILE
FILE
のパターンのいずれかにマッチするファイルやサブディレクトリを無視する。
--binary
--changed-group-format= FORMAT
FORMAT
を用いる。
--diff-program= PROGRAM
--from-file= FILE
FILE
を各オペランドと比較する (FILE はディレクトリでも良い)。
[訳注: 2.7 にはこのオプションは存在しない]
--horizon-lines= LINES
LINES
行を捨てずに保存する。
--ignore-file-name-case
--inhibit-hunk-merge
--left-column
--line-format= FORMAT
FORMAT
を用いる。
--new-group-format= FORMAT
FORMAT
を用いる。
--new-line-format= FORMAT
FORMAT
を用いる。
--no-ignore-file-name-case
--old-group-format= FORMAT
FORMAT
を用いる。
--old-line-format= FORMAT
FORMAT
を用いる。
--sdiff-merge-assist
--strip-trailing-cr
--suppress-common-lines
--unchanged-group-format= FORMAT
FORMAT
を用いる。
--unchanged-line-format= FORMAT
FORMAT
を用いる。
--help
-v, --version
*** FROMFILE FROMFILE-MODIFICATION-TIME --- TOFILE TOFILE-MODIFICATION-TIME
*************** *** FROMFILE-LINE-RANGE **** FROMFILE-LINE FROMFILE-LINE... --- TOFILE-LINE-RANGE ---- TOFILE-LINE TOFILE-LINE...
!
+
-
FROMFILE
各行は省略される。また全ての変更が削除であれば、
TOFILE
各行は省略される。
--- FROMFILE FROMFILE-MODIFICATION-TIME +++ TOFILE TOFILE-MODIFICATION-TIME
@@ FROMFILE-RANGE TOFILE-RANGE @@ LINE-FROM-EITHER-FILE LINE-FROM-EITHER-FILE...
+
-
` '
|
<
>
(
)
\
/
CHANGE-COMMAND TO-FILE-LINE TO-FILE-LINE... .
L a
R c
R d
NAME
を定義したり、未定義のままにすることによって、
どちらのバージョンを使うかを選択できる。
do { #ifndef HAVE_WAITPID if ((w = wait (&s)) < 0 && errno != EINTR) #else /* HAVE_WAITPID */ if ((w = waitpid (-1, &s, 0)) < 0 && errno != EINTR) #endif /* HAVE_WAITPID */ return w; } while (w != child);
diff \ --old-group-format='\begin{em} %<\end{em} ' \ --new-group-format='\begin{bf} %>\end{bf} ' \ old new
diff \ --old-group-format='\begin{em} %<\end{em} ' \ --new-group-format='\begin{bf} %>\end{bf} ' \ --unchanged-group-format='%=' \ --changed-group-format='\begin{em} %<\end{em} \begin{bf} %>\end{bf} ' \ old new
diff \ --unchanged-group-format='' \ --old-group-format='-------- %dn line%(n=1?:s) deleted at %df: %<' \ --new-group-format='-------- %dN line%(N=1?:s) added after %de: %>' \ --changed-group-format='-------- %dn line%(n=1?:s) changed at %df: %<-------- to: %>' \ old new
FORMAT
にはシェルのメタキャラクタが入っていることが多いので、
クォートするべきであろう。
--old-group-format= FORMAT
--new-group-format= FORMAT
--changed-group-format= FORMAT
--unchanged-group-format= FORMAT
%<
%>
%=
%%
%c'C''
C
は文字 1 文字で、C を表す。
C
にバックスラッシュやアポストロフィは指定できない。
例えば `%c':'' はコロンを表し、これは if-then-else 形式の
then 部分でもコロンとして解釈される。通常はコロンは
then 部分の終わりとして扱われる。
%c'\O''
( A = B ? T : E )
E
と等価である。
FN
F
は
printf (3)
の変換指定で、
N
は以下の文字のどれかである。
「 F で整形された N の値」
を表す。
e
f
l
m
n
E, F, L, M, N
FORMAT
にはシェルのメタキャラクタが入っていることが多いので、
クォートするべきであろう。
--old-line-format= FORMAT
--new-line-format= FORMAT
--unchanged-line-format= FORMAT
--line-format= FORMAT
%l
%L
%%
%c'C''
C
は文字 1 文字で、C を表す。
C
にバックスラッシュやアポストロフィは指定できない。
例えば `%c':'' はコロンを表し、これは if-then-else 形式の
then 部分でもコロンとして解釈される。通常はコロンは
then 部分の終わりとして扱われる。
%c'\O''
Fn
F
は
printf (3)
の変換指定で、
F
により整形された行番号を表す。
例えば `%.5dN' は行番号を `%.5d' という書式で整形して表示する。
printf 変換指定の詳細は、上記の行グループ形式のサブセクションを見よ。
デフォルトの行形式は
` %l '
に改行文字を続けたものである。入力にタブ文字があり、
それが出力行の桁揃えに重要である場合には、`%l' や `%L' の行指定を
タブストップの直後に置くとよい
(すなわち `%l' や `%L' の前にタブ文字を置けばよい)。
あるいは
-t
オプションを用いるのもよいだろう。
diff \ --old-line-format='< %l ' \ --new-line-format='> %l ' \ --old-group-format='%df%(f=l?:,%dl)d%dE %<' \ --new-group-format='%dea%dF%(F=L?:,%dL) %>' \ --changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL) %<--- %>' \ --unchanged-group-format='' \ old new
PATTERN
はクォート記号で囲うべきである。
例えば `-x '*.[ao]'' は `.a' や `.o'
で終わる名前のファイルをすべて無視する。
このオプションは、複数指定するとそれぞれが有効になる。
例えば `-x 'RCS' -x '*,v'' というオプションを指定すると、
ファイル名が `RCS' だったり `*,v' で終わるような
ファイルとサブディレクトリをすべて無視する。
0
1
2