리눅스 - Core Functions2

코린이·2024년 11월 14일

Linux

목록 보기
10/27

📌 diff

리눅스에서 diff 명령어는 두 파일의 내용을 비교하여 차이점을 보여주는 명령어다.

  • 보통 텍스트/코드 파일을 비교할 때 사용된다.
  • 출력 내용은 "첫 번째 파일이 두 번째 파일로 되기 위해 어떻게 수정되어야 하는지..."에 대한 내용이 출력된다.
diff [옵션] [파일1] [파일2]
--------- 옵션 list ---------
-u : "유니파이드(diff unified)" 형식으로 출력 (차이점을 더 보기 쉽게 보여줌)
-c : "컨텍스트(diff context)" 형식으로 출력 (더 많은 맥락을 제공) 
-i : 대소문자 구분 없이 비교 
-w : 공백(스페이스, 탭 등)을 무시하고 비교

텍스트 파일 file1.txt, file2.txt가 아래와 같은 데이터를 가지고 있다고 가정!!

----file1.txt----
Hi Kim
I'm Shin, and I'm studying Linux.

I am planning to study Linux tomorrow.


----file2.txt----
hi kim
I am Shin. I am studying UNIX.

I am planning to study Linux tomorrow.
# 옵션 없이 명령어 사용
diff file1.txt file2.txt

# 출력 결과
1,2c1,2									# 각 파일의 1~2번 째 라인 데이터가 다름
< Hi Kim								# file1.txt의 1~2번째 데이터가...
< I'm Shin, and I'm studying Linux.
---
> hi kim								# file2.txt의 1~2번째 데이터와 다름
> I am Shin. I am studying UNIX.

# -u 옵션 사용
diff -u file1.txt file2.txt

# 출력 결과
--- file1.txt	2024-11-14 15:49:35.468654780 +0000
+++ file2.txt	2024-11-14 15:50:16.499937304 +0000
@@ -1,4 +1,4 @@
-Hi Kim										# file1에만 있는 데이터(삭제해야 file2.txt와 동일해짐)
-I'm Shin, and I'm studying Linux.			# file1에만 있는 데이터(삭제해야 file2.txt와 동일해짐)
+hi kim										# file1에는 없는 데이터(추가해야 file2.txt와 동일해짐)
+I am Shin. I am studying UNIX.				# file1에는 없는 데이터(추가해야 file2.txt와 동일해짐)

 I am planning to study Linux tomorrow.		# file1, file2에 공통으로 있는 데이터

# -c 옵션 사용
diff -c file1.txt file2.txt

# 출력 결과
*** file1.txt	2024-11-14 15:49:35.468654780 +0000
--- file2.txt	2024-11-14 15:50:16.499937304 +0000
***************
*** 1,4 ****
! Hi Kim									# file1.txt와 file2.txt와 비교했을 때 서로 다른 데이터
! I'm Shin, and I'm studying Linux.			# file1.txt와 file2.txt와 비교했을 때 서로 다른 데이터

  I am planning to study Linux tomorrow.
--- 1,4 ----
! hi kim									# file1.txt와 file2.txt와 비교했을 때 서로 다른 데이터
! I am Shin. I am studying UNIX.			# file1.txt와 file2.txt와 비교했을 때 서로 다른 데이터

  I am planning to study Linux tomorrow.

# -i 옵션 사용
diff -i file1.txt file2.txt

# 출력 결과
2c2										# 대소문자 비교 없이 비교한 경우 각 파일의 2번째 라인 데이터만 다름을 확인
< I'm Shin, and I'm studying Linux.
---
> I am Shin. I am studying UNIX.

📌 cmp

리눅스에서 cmp 명령어는 두 파일의 내용을 비교하여 차이점을 데이터 시각으로 보여주는 명령어다.

  • 보통 파일의 내용을 데이터 시각으로 비교할 때 사용된다.
cmp [옵션] [파일1] [파일2]
--------- 옵션 list ---------
-l : 두 파일의 차이점을 바이트 단위로 ASCII 코드 값과 함께 출력. 위치와 값 차이를 상세히 확인 가능
-s : 두 파일이 다른지만 확인하고 출력하지 않음 (두 파일이 같으면 0, 다르면 1, 오류면 2 반환)
-i <n> : 지정한 바이트 수만큼 건너뛰고 비교 시작 (예: -i 10이면 처음 10바이트 무시)

텍스트 파일 file1.txt, file2.txt가 아래와 같은 데이터를 가지고 있다고 가정!!

----file1.txt----
Hi Kim
I'm Shin, and I'm studying Linux.

I am planning to study Linux tomorrow.


----file2.txt----
hi kim
I am Shin. I am studying UNIX.

I am planning to study Linux tomorrow.
# 옵션 없이 명령어 사용
cmp file1.txt file2.txt

# 출력 결과
file1.txt file2.txt differ: byte 1, line 1		# 각 파일의 첫 번째 첫 문자부터 서로 다름을 

# -s옵션 사용
cmp -sfile1.txt file2.txt
echo $?			# -s옵션을 출력값을 반환하지 않기 때문에 해당 명령어를 사용하여 확인해야 한다.

# 출력 결과
1				# 두 파일이 서로 다름을 의미

0개의 댓글