기계적 인조 인간

리눅스에서 Diff 명령

Monster Truck Toys Cars Rc Adventures 2016 Crazy MonsterTruck Offroad Kinderfilm

Monster Truck Toys Cars Rc Adventures 2016 Crazy MonsterTruck Offroad Kinderfilm

차례:

Anonim

diff 는 두 파일을 한 줄씩 비교할 수있는 명령 줄 유틸리티입니다. 디렉토리의 내용을 비교할 수도 있습니다.

diff 명령은 patch 명령을 사용하여 적용 할 수있는 하나 이상의 파일 간의 차이점을 포함하는 패치를 작성하는 데 가장 일반적으로 사용됩니다.

diff 명령을 사용하는 방법

diff 명령의 구문은 다음과 같습니다.

diff… 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 줄을 삭제하십시오.

change 명령 다음에는 완전한 행이 제거되고 ( < ) 파일에 추가됩니다 ( > ).

출력을 설명하자:

  • 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 line-다른 행과 컨텍스트 행:
    • 두 개의 공백으로 시작하는 줄은 문맥의 줄이며 두 파일에서 모두 같은 줄입니다. 빼기 기호 ( - )로 시작하는 줄은 두 번째 파일에서 아무것도 일치하지 않는 줄입니다. 두 번째 파일에서 누락 된 행 더하기 기호 ( + )로 시작하는 행은 첫 번째 파일에서 아무것도 해당하지 않는 행입니다. 첫 번째 파일에서 누락 된 줄 느낌표 ( ! )로 시작하는 줄은 두 파일 사이에서 변경되는 줄입니다. ! 시작하는 각 줄 그룹 ! 첫 번째 파일에서 두 번째 파일과 일치하는 항목이 있습니다.

출력의 가장 중요한 부분을 설명하겠습니다:

  • 이 예에서는 차이점을 설명하는 섹션이 하나만 있습니다. *** 1, 6 **** --- 1, 7 ---- 이 섹션에 포함 된 첫 번째 파일과 두 번째 파일의 줄 범위를 알려줍니다. 줄 Ubuntu , Debian , Fedora 및 the 마지막 빈 줄은 두 파일에서 동일합니다. 이 줄은 이중 공간으로 시작합니다. 첫 번째 파일의 Line - Arch Linux 는 두 번째 파일의 아무것도 아닙니다. 이 줄은 두 번째 파일에도 존재하지만 위치는 다릅니다. 두 번째 파일의 Line + Kubuntu 는 첫 번째 파일의 내용과 일치하지 않습니다 ! CentOS 첫 번째 파일과 줄에서 ! CentOS ! Arch Linux ! Arch Linux ! CentOS 두 번째 파일의 ! CentOS 는 파일간에 변경됩니다.

기본적으로 컨텍스트 줄 수는 기본적으로 3입니다. 다른 숫자를 지정하려면 -C ( --contexts ) 옵션을 사용하십시오.

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…

  • @@ from-file-line-numbers to-file-line-numbers @@ -이 섹션에 포함 된 첫 번째 및 두 번째 파일의 행 번호 또는 행 범위. line-from-files 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 를 입력하십시오.

다른 터미널