12. Normal Format: 출력 예제(상세)
$ diff foo bar
2c2 # 원본 파일의 2라인이 새 파일의 2라인으로 변경됨
< I am foo. # 원본 파일 라인(삭제됨)
---
> I am bar. # 새 파일 라인(추가됨)
4d3 # 원본 파일의 4라인이 삭제됨
< b
7a7,8 # 원본의 7라인에 새 파일의 7,8라인이 추가됨
> f
> g
13. Context Format
$ diff -c foo bar
• `-c` 옵션을 사용하며,
변경된 라인 전/후의 라인을 함께 출력한다.
• 변경된 라인의 주변을 확인할 수 있기 때문에,
정확하게 어떤 것이 변경되었는지 파악할 수 있다.
• 주로 소스코드를 배포할 때 사용한다.
• `-C 라인수`, `--context[=라인수]` 옵션으로,
출력할 주변 라인의 개수를 설정할 수 있다.
(기본 3개)
14. 예제 텍스트
<원본 파일:foo> <새 파일:bar>
1 Hello, 1 Hello,
2 I am foo. 2 I am bar.
3 a 3 a
4 b 4 c
5 c 5 d
6 d 6 e
7 e 7 f
8 8 g
9
15. Context Format: 출력 예제
$ diff -c foo bar (좌측에서 계속)
*** foo 2013-01-29 --- 1,8 ----
--- bar 2013-01-29 Hello,
*************** ! I am bar,
*** 1,7 **** a
Hello, c
! I am foo. d
a e
- b + f
c + g
d
e
16. Context Format: 출력 예제
$ diff -C 1 foo bar (좌측에서 계속)
*** foo 2013-01-29 ! I am bar,
--- bar 2013-01-29 a
*************** c
*** 1,5 **** ***************
Hello, *** 7 ****
! I am foo, --- 6,8 ----
a e
- b + f
c + g
--- 1,4 ----
Hello,
17. Context Format: 출력 형태
• 각 파일의 이름과 수정시각을 나타내는 헤더 이후에,
각 파일에서 변경된 라인 부분을 출력한다.
• 옵션으로 넘긴 라인수만큼(기본 3개),
변경된 라인의 전/후 라인도 함께 출력한다.
*** 원본파일 수정시각
--- 새파일 수정시각
***************
*** 원본 파일 범위 ****
[변경 키워드] 원본 파일 라인
--- 새 파일 범위 ----
[변경 키워드] 새 파일 라인
18. Context Format: 변경 키워드
• 각 파일에서 변경된 라인은,
변경 키워드와 공백 이후에 출력된다.
변경되지 않은 라인은 2개의 공백 이후 출력한다.
• 변경 키워드는 다음과 같다.
! : 변경됨
+ : 새 파일에 추가됨
- : 원본 파일에서 삭제됨
19. Context Format: 출력 예제(상세)
$ diff -c foo bar
*** foo 2013-01-29 # 원본 파일의 이름과 수정 시각
--- bar 2013-01-29 # 새 파일의 이름과 수정 시각
***************
*** 1,7 **** # 원본 파일의 1~7라인이 변경됨
Hello,
! I am foo. # 변경된 라인
a
- b # 삭제된 라인
c # 변경된 라인 주변 3라인을 출력 (첫번째 라인)
d # (두번째 라인)
e # (세번째 라인)
20. Context Format: 출력 예제(상세)
(이전 페이지에서 계속)
--- 1,8 ----
Hello,
! I am bar, # 변경된 라인
a
c # 변경된 라인 전/후로 3라인이 여기까지 겹치므로,
d # 모두 한 번에 출력된다.
e
+ f # 추가된 라인
+ g # 추가된 라인
21. Context Format: 출력 예제(상세)
$ diff -C 1 foo bar # 주변 라인 1개까지만 출력한다.
*** foo 2013-01-29
--- bar 2013-01-29
***************
*** 1,5 ****
Hello,
! I am foo,
a
- b
c # 변경 라인 이후의 1개 라인만 출력됨
--- 1,4 ----
Hello,
22. Context Format: 출력 예제(상세)
(이전 페이지에서 계속)
! I am bar,
a
c
***************
*** 7 **** # 주변 라인을 1개만 출력하면 변경 부분이
--- 6,8 ---- # 겹치지 않으므로, 분리해 출력한다.
e # 마찬가지로, 변경 라인 전의 1라인만 출력됨
+ f
+ g # 변경 라인이자 파일의 마지막이다
23. Unified Format
$ diff -u foo bar
• `-u` 옵션을 사용하며,
`-U 라인수`, `--unified[=라인수]` 옵션으로
주변 라인 개수를 설정할 수 있다.
• Context Format과 비슷하지만,
변경된 부분의 주변 라인의 중복을 제거하고,
두 파일의 변화를 한 번에 볼 수 있어 간략하다.
24. 예제 텍스트
<원본 파일:foo> <새 파일:bar>
1 Hello, 1 Hello,
2 I am foo. 2 I am bar.
3 a 3 a
4 b 4 c
5 c 5 d
6 d 6 e
7 e 7 f
8 8 g
9
25. Unified Format: 출력 예제
$ diff -u foo bar (좌측에서 계속)
--- foo 2013-01-29 +f
+++ bar 2013-01-29 +g
@@ -1,7 +1,8 @@
Hello,
-I am foo.
+I am bar.
a
-b
c
d
e
26. Unified Format: 출력 예제
$ diff -U 1 foo bar (좌측에서 계속)
--- foo 2013-01-29 +f
+++ bar 2013-01-29 +g
@@ -1,5 +1,4 @@
Hello,
-I am foo.
+I am bar.
a
-b
c
@@ -7 +6,3
e
27. Unified Format: 출력 형태
• 각 파일의 이름과 수정시각을 나타내는 헤더 이후에,
두 파일의 변경 부분을 함께 출력한다.
• 변경 부분의 시작에는 각 파일의 변경 범위를 출력하고,
이후에 각 라인이 출력된다.
--- 원본파일 수정시각
+++ 새파일 수정시각
@@ -원본파일범위 +새파일범위 @@
[변경 키워드]각 파일의 라인
28. Unified Format: 변경 키워드
• 출력되는 각 라인은,
변경된 경우 변경 키워드로 시작하고,
변경되지 않은 경우 공백으로 시작한다.
• 변경 키워드는 다음과 같다.
+ : 새 파일에 추가됨
- : 원본 파일에서 삭제됨
29. Unified Format: 출력 예제(상세)
$ diff -u foo bar
--- foo 2013-01-29
+++ bar 2013-01-29
@@ -1,7 +1,8 @@ # 원본파일의 1,7라인이
Hello, # 새 파일의 1,8라인으로 변경됨
-I am foo. # 원본 파일에서 삭제되고,
+I am bar. # 새 파일에 추가됨.
a
-b # 변경 키워드 이후에 바로 라인이 출력되고,
c # 변경되지 않은 경우 공백 이후에 출력됨
d
e
31. Unified Format: 출력 예제(상세)
$ diff -U 1 foo bar # 주변 라인을 1라인만 출력함
--- foo 2013-01-29
+++ bar 2013-01-29
@@ -1,5 +1,4 @@
Hello,
-I am foo.
+I am bar.
a
-b
c # 변경 라인 이후 1개 라인까지만 출력
@@ -7 +6,3 # 주변 라인의 개수가 1라인이므로,
e # 변경 부분을 분리해서 출력함