일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- LAYER_TYPE_SOFTWARE
- Realm
- quick-start
- porterduff
- firebase
- log
- 스트리밍
- fabric-sdk-java
- 안드로이드
- convert
- 다윈
- null safety
- C
- ethereum
- dataginding
- error
- hardwareacceleration
- Hyperledger
- fabic
- bigquery
- Glide
- web3js
- Android
- 컴파일
- coroutines
- kotlin
- Gradle
- test
- Exception
- vuepress
- Today
- Total
날마다 새롭게 또 날마다 새롭게
Linux / mac - diff 명령어 사용법 (파일비교) 본문
Linux 에서 파일 비교하는 명령어 Diff 에 대해서 살펴보자
개요
diff 명령은 다음과 같다.
diff [옵션] file1 file2
설명
file1과 file2 비교하여 차이점을 찾아낸다.
예제
예제를 통해 간단한 사용 방법을 살펴보자
다음과 같은 4개의 파일들이 있다.
// a
aaaa
// b
aaaa
bbbb
// c
aaaa
bbbb
cccc
// cc
aaaa
bbbb
cccd
a 와 b 가 다른지 확인
다음과 같이 실행하면,
diff a b
결과가 다음과 같다.
1a2
> bbbb
결과를 읽어보면 다음과 같다.
대략 a 파일의 1번째 line 위치에서 bbbb
를 추가해야 하고 추가하면 2 line 이 된다는 내용이다.
1a2
- 1 : 원본 파일 (a 파일) 의 line 수 (~1번째 line)
- a : added (추가)
- 2 : 수정한 결과 line 수 (1 line 에서 한 줄 추가해서 2 line 이 됨)
> bbbb
b 파일에 bbbb
라는 내용이 있다는 내용이다.
c 와 b 가 다른지 확인
다음과 같이 실행하면,
diff c b
결과가 다음과 같다.
3d2
< cccc
결과를 읽어보면 다음과 같다.
대략 c 파일의 3번째 line 에서 cccc
를 삭제해야하고 삭제하면 2 line 이 된다는 내용이다.
3d2
- 3 : 원본 파일(c 파일) 의 line 수 (~3번째 line)
- d : deleted (삭제)
- 2 : 수정한 결과 line 수 (3 line 에서 한줄 삭제해서 2 line 이 됨)
< cccc
c 파일에 cccc
라는 내용이 있다는 내용이다.
c 와 cc 가 다른지 확인
다음과 같이 실행하면,
diff c cc
결과가 다음과 같다.
3c3
< cccc
---
> cccd
결과를 읽어보면 다음과 같다.
대략 c 파일의 3번째 line 에서 cccc
를 삭제해야하고 삭제하면 2 line 이 된다는 내용이다.
3c3
- 3 : 원본 파일(c 파일) 의 line 수 (~3번째 line)
- c : changed (변경)
- 3 : 수정한 결과 line 수 (line 을 변경했기 때문에 그대로 3 line 이 됨)
< cccc
c 파일에 cccc
라는 내용이 있다는 내용이다.
> cccd
cc 파일에 cccd
라는 내용이 있다는 내용이다.
-u
옵션을 사용해서 결과 보기
-u
옵션을 사용해서 결과를 조회해보자.
diff -u a b
결과가 다음과 같다.
--- a 2020-12-28 16:32:17.000000000 +0900
+++ b 2020-12-28 16:32:16.000000000 +0900
@@ -1 +1,2 @@
aaaa
+bbbb
두번째 line 까지는 파일 정보가 나오는데 a
파일은 -
로 표시하고 b
파일은 +
로 표시한다는 내용이다.
@@ -1 +1,2 @@
는 -
(a파일)는 ~1 line 이고, +
(b파일) 는 1~2 line 의 내용이라는 내용이다.
그 다음 줄 부터는 결과를 보여줘서 전체적인 변화를 눈으로 볼 수 있다. aaaa
는 동일하고 2번째 line 에서 bbbb
는 +
파일에 있다는 내용이다.
aaaa
+bbbb
patch 할 때, diff 로 비교하기
리눅스 patch 할 때는 -urN
옵션을 사용해서 버전을 변경하기 위해서 파일을 어떻게 수정해야 하는지 쉽게 알 수 있다.
명령 예시)
diff -urN kernel-1.0 kernel-1.1 > patch.patch
위는 kernel-1.0에서 kernel-1.1로 업데이트 하기 위해서 파일의 내용을 어떻게 수정해야 하는지 알 수 있다.
diff 옵션 설명
-b : 연속된 공백 무시
-i : 대소문자를 구분하지 않음
-t : 출력 라인에 TAB 문자를 넣음
-w : 두 행의 비교 시 공백을 무시
--brief : 파일 비교 후 결과 표시(같은지, 다른지)
-d : 세세한 차이까지 검색
-H : 큰 파일을 빠르게 처리할 때 사용
-q : 두 파일의 차이점만 출력
-s : 두 파일이 같은 지 확인
-r : 두 디렉토리의 차이점 출력
-u : undirectional new file 옵션으로 비교하는 파일/디렉토리가 빠져있을 경우 dummy로 처리해서 출력을 통일시킴
-r : recursive 하위 디렉토리 모두 검색
-N : 검색 중 new file도 적용 가능