diff는 두 파일을 한 줄씩 비교할 수 있는 명령줄 유틸리티입니다. 또한 디렉토리의 내용을 비교할 수도 있습니다.
diff 명령은 패치 명령을 사용하여 적용할 수 있는 하나 이상의 파일 간의 차이를 포함하는 패치를 만드는 데 가장 일반적으로 사용됩니다.
diff 명령을 사용하는 방법
diff 명령의 구문은 다음과 같습니다.
diff [OPTION]... FILES
diff 명령은 출력을 여러 형식으로 표시할 수 있으며 가장 일반적인 형식은 일반, 컨텍스트 및 통합 형식입니다. 출력에는 파일의 줄이 동일해지도록 변경해야 하는 줄에 대한 정보가 포함됩니다. 파일이 일치하면 출력이 생성되지 않습니다.
명령 출력을 파일에 저장하려면 리디렉션 연산자를 사용합니다.
diff file1 file2 > patch
이 문서에서는 다음 두 파일을 사용하여 diff 명령의 작동 방식을 설명합니다.
# file1
Ubuntu
Arch Linux
Debian
CentOS
Fedora
# file2
Kubuntu
Ubuntu
Debian
Arch Linux
Centos
Fedora
일반 형식
옵션 없이 diff 명령을 두 텍스트 파일에서 실행할 때 가장 간단한 형태로 일반 형식의 출력을 생성합니다.
diff file1 file2
# 0a1
# > Kubuntu
# 2d2
# < Arch Linux
# 4c4,5
# < CentOS
# ---
# > Arch Linux
# > Centos
일반 출력 형식은 차이점을 설명하는 하나 이상의 섹션으로 구성됩니다. 각 섹션은 다음과 같습니다.
change-command
< from-file-line...
---
> to-file-line...
0a1, 2d2, 4c4,5는 변경 명령입니다. 각 변경 명령에는 왼쪽에서 오른쪽으로 다음 항목이 포함됩니다.
첫 번째 파일의 줄 번호 또는 줄 범위입니다.
특수 변경 문자입니다.
두 번째 파일의 줄 번호 또는 줄 범위입니다.
변경 문자는 다음 중 하나일 수 있습니다.
a - 줄을 추가합니다.
c - 라인을 변경합니다.
d - 줄을 삭제합니다.
변경 명령 뒤에 제거(<)되고 파일(>)에 추가되는 전체 행이 나옵니다.
출력에 대해 설명하겠습니다.
0a1 - 파일1의 시작 부분에 (0줄 뒤에) 두 번째 파일의 1줄을 추가합니다.
> Kubuntu - 위에서 설명한 대로 첫 번째 파일에 추가된 두 번째 줄의 행입니다.
2d2 - 첫 번째 파일에서 줄 2를 삭제합니다. d 기호 뒤의 2는 선이 삭제되지 않으면 두 번째 파일의 라인 2에 나타납니다.
< Arch Linux - 삭제된 줄입니다.
4c4,5 - 첫 번째 파일의 5줄을 두 번째 파일의 4-5줄로 교체(변경)합니다.
< CentOS - 첫 번째 파일의 행입니다.
--- - 구분자입니다.
> Arch Linux 및 > Centos - 두 번째 파일의 라인이 첫 번째 파일의 라인을 대체합니다.
컨텍스트 형식
컨텍스트 출력 형식을 사용할 때 diff 명령은 파일 간에 서로 다른 줄 주위에 여러 줄의 컨텍스트를 표시합니다.
-c 옵션은 diff에게 컨텍스트 형식으로 출력을 생성하라고 지시합니다.
diff -c file1 file2
# *** file1 2019-11-25 21:00:26.422426523 +0100
# --- file2 2019-11-25 21:00:36.342231668 +0100
# ***************
# *** 1,6 ****
# Ubuntu
# - Arch Linux
# Debian
# ! CentOS
# Fedora
#
# --- 1,7 ----
# + Kubuntu
# Ubuntu
# Debian
# ! Arch Linux
# ! Centos
# Fedora
출력은 비교되는 파일의 이름 및 타임스탬프와 차이점을 설명하는 하나 이상의 섹션으로 시작합니다. 각 섹션은 다음과 같습니다.
***************
*** from-file-line-numbers ****
from-file-line...
--- to-file-line-numbers ----
to-file-line...
from-file-line-numbers 와 to-file-line-numbers - 첫 번째 파일과 두 번째 파일에서 각각 줄 번호 또는 쉼표로 구분된 줄 범위입니다.
from-file line 및 to-file line - 서로 다른 행과 컨텍스트 행은 다음과 같습니다.
두 개의 공백으로 시작하는 줄은 두 파일에서 동일한 행인 컨텍스트의 선입니다.
빼기 기호(-)로 시작하는 행은 두 번째 파일에서 아무 것도 대응하지 않는 행입니다. 두 번째 파일에 줄이 없습니다.
더하기 기호(+)로 시작하는 행은 첫 번째 파일의 아무 것도 대응하지 않는 행입니다. 첫 번째 파일에 줄이 없습니다.
느낌표(!)로 시작하는 행은 두 파일 간에 변경되는 행입니다. 첫 번째 파일에서 !로 시작하는 각 줄 그룹은 두 번째 파일에서 해당 일치 항목을 가집니다.
출력에서 가장 중요한 부분을 설명하겠습니다.
이 예에서는 차이점을 설명하는 단 하나의 섹션만 있습니다.
*** 1,6 *** 및 --- 1,7 --은 이 섹션에 포함된 첫 번째 및 두 번째 파일의 행 범위를 알려줍니다.
Ubuntu, Debian, Fedora 및 마지막 빈 줄은 두 파일에서 동일합니다. 이 선들은 두 개의 공백으로 시작합니다.
줄 - 첫 번째 파일의 Arch Linux는 두 번째 파일의 nothing에 해당합니다. 이 줄은 두 번째 파일에도 있지만 위치가 다릅니다.
두 번째 파일의 Line + Kubuntu는 첫 번째 파일의 nothing에 해당합니다.
! CentOS 와 ! Arch Linux는 두 번째 파일들 사이에서 바뀝니다.
기본적으로 컨텍스트 줄 수는 3개로 설정됩니다.
다른 숫자를 지정하려면 -C(--컨텍스트) 옵션을 사용합니다.
diff -C 1 file1 file2
# *** file1 2019-11-25 21:00:26.422426523 +0100
# --- file2 2019-11-25 21:00:36.342231668 +0100
# ***************
# *** 1,5 ****
# Ubuntu
# - Arch Linux
# Debian
# ! CentOS
# Fedora
# --- 1,6 ----
# + Kubuntu
# Ubuntu
# Debian
# ! Arch Linux
# ! Centos
# Fedora
통일된 형식
통합 출력 형식은 컨텍스트 형식의 개선된 버전이며 더 작은 출력을 생성합니다.
-u 옵션을 사용하여 출력을 통일된 형식으로 출력하도록 diff에 알립니다.
diff -u file1 file2
# --- file1 2019-11-25 21:00:26.422426523 +0100
# +++ file2 2019-11-25 21:00:36.342231668 +0100
# @@ -1,6 +1,7 @@
# +Kubuntu
# Ubuntu
# -Arch Linux
# Debian
# -CentOS
# +Arch Linux
# +Centos
# Fedora
출력은 파일의 이름과 타임스탬프, 그리고 차이를 설명하는 하나 이상의 섹션으로 시작합니다. 각 섹션은 다음과 같은 형태를 취합니다.
***************
@@ from-file-line-numbers to-file-line-numbers @@
line-from-files...
@@ 파일 줄 번호에서 파일 줄 번호까지 @@ - 이 섹션에 포함된 첫 번째 및 두 번째 파일의 줄 번호 또는 범위입니다.
파일에서 줄 - 다른 줄과 컨텍스트의 줄은 다음과 같습니다.
두 개의 공백으로 시작하는 줄은 두 파일에서 동일한 행인 컨텍스트의 선입니다.
빼기 기호(-)로 시작하는 행은 첫 번째 파일에서 제거된 행입니다.
더하기 기호(+)로 시작하는 행은 첫 번째 파일에서 추가된 행입니다.
대소문자를 무시
위의 예에서 알 수 있듯이 diff 명령은 기본적으로 대소문자를 구분합니다.
-i 옵션을 사용하여 diff에게 대소문자를 무시하도록 지시합니다.
diff -ui file1 file2
# --- file1 2019-11-25 21:00:26.422426523 +0100
# +++ file2 2019-11-25 21:00:36.342231668 +0100
# @@ -1,6 +1,7 @@
# +Kubuntu
# Ubuntu
# -Arch Linux
# Debian
# +Arch Linux
# CentOS
# Fedora
텍스트 파일의 차이점 비교는 Linux 시스템 관리자의 가장 일반적인 작업 중 하나입니다.
diff 명령은 파일을 한 줄씩 비교합니다. 자세한 내용을 보려면 단말기에 man diff를 입력하십시오.
'SW > 리눅스' 카테고리의 다른 글
Linux : CentOS 8 : SELinux 비활성화 방법, 예제, 명령어 (0) | 2022.05.03 |
---|---|
Linux : Docker 실행하는 방법, 명령어, 예제 (0) | 2022.05.02 |
Linux : Debian 10 : Let's Encrypt로 Nginx 보안 설정 방법, 예제, 명령어 (0) | 2022.04.30 |
Linux : CIFS로 윈도우 공유 마운트 방법, 예제, 명령어 (0) | 2022.04.29 |
Linux : CentOS 8 : 구글 크롬 브라우저 설치 방법, 예제, 명령어 (0) | 2022.04.28 |