Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

Linux diff – 예제와 함께 차이점을 표시하고 패치를 만드는 방법

차이 명령은 Linux 쉘에서 파일이나 디렉토리를 비교하는 쉬운 방법입니다. 이 문서에서는 몇 가지 일반적인 사용 예와 함께 사용 방법을 보여줍니다.

차이 명령은 두 파일 또는 디렉토리를 한 줄씩 비교하고 차이점을 출력합니다.

파일이나 디렉토리를 비교하려는 이유는 무엇입니까?

  • 같은 이름을 가진 두 개의 파일이 비슷해 보이고 차이점을 확인하고 싶을 수 있습니다.
  • 새 버전과 이전 버전 간에 구축 중인 프로젝트의 프로그래밍 코드 변경 사항을 비교합니다.
  • 많은 파일을 다른 드라이브에 복사했으며 모든 파일이 손상 없이 성공적으로 복사되었는지 확인하려고 합니다.
  • 당신과 친구 모두 한 폴더에 같은 파일 세트를 가지고 있습니다. 변경 사항을 적용했지만 모든 변경 사항을 친구에게 다시 보내고 싶지 않습니다. diff를 사용할 수 있습니다. 해당 파일에 대한 변경 사항만 포함하는 패치를 만들어 파일로 보낸 다음 모든 것을 다시 다운로드할 필요 없이 복사본을 최신 상태로 가져옵니다.

파일을 비교하는 데에는 자신만의 이유가 있을 수 있으므로 차이 사용 방법.

차이 구문

diff OPTIONS FILES

참고:

  • 옵션은 선택사항입니다. 아래 표에서 제공할 수 있습니다.
  • 파일 공백으로 구분된 비교할 두 파일의 경로입니다.

차이 옵션

다음은 가장 일반적으로 사용되는 옵션입니다. 차이 명령, 사용자 설명서에서 직접:

<일>
-q, –간략한 파일이 다른 경우에만 보고
-s, –report-identical-files 두 파일이 동일한 경우 보고
-u, -U NUM, –통합[=NUM] 통합 컨텍스트의 NUM(기본값 3)줄 출력
-N – 새 파일 없는 파일을 빈 파일로 처리
-l, –페이지 매김 'pr'을 통해 출력을 전달하여 페이지 매김
-r, –재귀 찾은 하위 디렉토리를 재귀적으로 비교
–역참조 없음 심볼릭 링크를 따라가지 마세요
-a, –텍스트 모든 파일을 텍스트로 취급
-d, –최소 더 작은 변경 사항을 찾기 위해 열심히 노력하십시오.
–속도가 큰 파일 큰 파일과 많은 흩어져 있는 작은 변경 사항을 가정합니다.

여기에서 전체 설명서를 보거나 다음을 실행할 수 있습니다.

man diff

...전체 옵션 세트에 대한 명령줄에서.

예시

Linux의 diff
로 파일 비교

이것은 diff의 가장 간단한 사용법입니다. 명령을 실행하고 제공된 두 파일 간의 차이를 콘솔에 출력합니다.

diff file1.txt file2.txt

출력 리디렉션

패치를 생성하는 대신 차이점을 확인하려는 경우 단순히 출력을 파일로 리디렉션하는 것이 유용합니다. 따라서 변경 사항이 많을 경우 터미널이 변경 사항을 차단하지 않습니다.

diff -q file1.txt file2.txt > differences.txt

생성(또는 덮어쓰기!차이점.txt, 두 파일의 차이점을 요약합니다.

-q 차이점만 나열되도록 옵션이 추가되었습니다. 무슨 일이 일어나고 있는지 더 쉽게 볼 수 있도록 동일한 파일은 언급되지 않습니다.

diff와 디렉터리 비교

디렉터리는 -r을 사용하여 비교할 수도 있습니다. (재귀적) 내용을 비교하는 옵션:

diff -r -q /path/to/dir1 /path/to/dir2

다시 말하지만, -q를 사용했습니다. 차이점만 나열되도록 여기에서 옵션을 선택하십시오.

대용량 파일 또는 대용량 파일이 포함된 디렉토리 비교

차이 집중적인 프로세스입니다. 비교되는 모든 파일을 읽고 비교해야 합니다. 시간이 걸릴 수 있습니다.

 –속도가 큰 파일 옵션은 차이점을 변경합니다. 대용량 파일을 비교하는 경우 더 효율적으로 만드는 알고리즘으로 작업 속도가 약간 빨라집니다.

파일에 대한 패치 만들기

패치를 만들려면 – 첫 번째 파일의 다른 복사본에 적용하여 두 번째 파일과 동일하게 만들 수 있는 두 파일 간의 차이점 목록은 다음 명령을 사용할 수 있습니다.

diff -u file1.txt file2.txt > update.patch

-u 옵션은 통합의 차이점을 출력합니다. 패치에서 사용할 수 있는 형식 변경 사항으로 원본 파일을 업데이트하는 명령입니다.

이것은 데이터 또는 프로그래밍 코드의 일부를 사용하는 친구나 동료가 있고 전체 데이터 세트나 애플리케이션을 다시 보내지 않고 업데이트를 보내려는 경우에 유용합니다.

파일용 패치 설치

친구가 패치를 받으면 다음 패치를 사용하여 적용할 수 있습니다. 명령:

patch original.txt < update.patch

파일 패치 실행 취소

실수한 경우 -R을 사용하여 역순으로 패치를 실행하여 패치를 취소할 수 있습니다. 옵션:

patch -R original.txt < update.patch

디렉토리용 패치 생성

다음 명령은 -r을 실행하여 전체 디렉토리에 대한 패치를 생성합니다. (재귀), -u (통합 형식) 및 -N (없는 파일을 비어 있는 것으로 취급) 옵션.

diff -ruN originalDir updatedDir > update.patch

디렉토리용 패치 설치

-p0을 사용하여 디렉토리에 패치를 적용할 수 있습니다. 다음에서 생성된 것과 동일한 디렉토리 구조에 패치를 적용하는 옵션:

patch -p0 < update.patch

디렉토리에 대한 패치 실행 취소

마지막으로 디렉토리 패치 실행 취소/반전:

patch -R -p0 originalFile < patchFile