Linux에서 Diff 파일을 사용하는 방법

Linux에서 Diff 파일을 사용하는 방법

Diff는 Unix 시스템용 명령줄 도구로 두 개의 파일 또는 디렉터리를 비교하고 차이점을 확인할 수 있습니다. 파일의 이전 버전과 새 버전을 비교하여 무엇이 변경되었는지 확인하는 데 이상적입니다. diff이 기사에서는 Linux에서 파일을 쉽게 비교하는 데 사용할 수 있는 방법을 보여줍니다 .

diff로 파일 비교

  • 터미널 창을 엽니다.
  • diff비교하려는 두 파일의 경로를 입력합니다 . 이 경우 다음 명령을 사용하여 데스크톱에서 두 개의 작은 C 프로그램을 비교하고 있습니다.

diff ~/Desktop/hello.c ~/Desktop/hello-1.c

diff 명령을 보여주는 터미널 창.
  • Enter명령을 제출하려면 누르십시오 . 결과 화면에는 파일 사이의 모든 다른 줄이 표시됩니다. 비교한 줄 번호는 “1c1″로 표시되며 이는 첫 번째 줄이 변경되었음을 의미하며 다음과 같은 차이점이 발견되었습니다.
diff 명령의 출력을 보여주는 터미널 창.
  • 파일과 그 차이점을 나란히 보기 위해 -y뒤에 플래그를 사용하십시오 diff. 예를 들어:

diff -y ~/Desktop/hello.c ~/Desktop/hello-1.c

시각적 차이를 인쇄하는 명령을 표시하는 터미널 창.

파이프 기호( |)가 있는 선은 차이가 있는 선입니다. 먼저 터미널 창을 확장해야 합니다. 그렇지 않으면 디스플레이를 보는 데 어려움을 겪을 수 있습니다.

시각적 diff 명령의 출력을 보여주는 터미널 창.

파일을 Meld와 비교

의 기능은 의 GUI인 Meld를diff ​​통해서도 액세스할 수 있습니다 . diff의 사용자 인터페이스가 다루기 어려울 수 있다는 점을 고려하면 Meld는 유용한 도구입니다.diff

  • 터미널을 열고 다음을 입력하여 명령줄에서 Meld를 ​​설치합니다.

sudo apt -y install meld

또는

sudo dnf -y install meld

RPM 기반 배포판의 경우.

그러면 apt 패키지 관리자가 초기화되고 Meld 설치가 시작됩니다. -y플래그는 프롬프트에 대해 자동으로 “예”라고 응답 합니다 . 이러한 프롬프트를 수동으로 확인하려면 제거하십시오.

Meld의 설치 명령을 보여주는 터미널 창.
  • 프롬프트가 표시되면 관리자 비밀번호를 입력하십시오. 명령 프롬프트가 다시 표시되면 설치가 완료되고 Meld를 ​​열 수 있습니다.
Meld 설치 프로세스를 보여주는 터미널 창.
  • Meld를 ​​열면 파일 비교, 디렉터리 비교 및 ​​버전 제어 보기의 세 가지 옵션이 표시됩니다. “파일”을 클릭합니다.
Meld 시작 화면의 스크린샷.
  • 두 개의 드롭다운 메뉴가 나타나며 둘 다 “(없음)”이라고 표시됩니다. 비교할 파일을 선택하려면 하나를 클릭하십시오.
첫 번째 파일 선택기가 강조 표시된 Meld 화면의 스크린샷.
  • 다른 드롭다운 메뉴를 클릭하여 비교할 두 번째 파일을 선택합니다.
두 번째 파일 선택기가 강조 표시된 Meld 화면의 스크린샷.
  • “비교” 버튼을 클릭합니다.
비교 버튼이 강조 표시된 Meld 화면의 스크린샷.
  • 다음 창에는 두 파일 간에 발견된 차이점이 요약되어 있습니다. 빨간색 문자는 차이이며 파란색 배경은 해당 라인에 차이가 있음을 나타냅니다. 녹색 배경은 라인이 한 파일에는 있지만 다른 파일에는 없다는 것을 나타냅니다.
간단한 두 파일 비교 보기가 있는 Meld 프로그램의 스크린샷.
  • 차이점을 탐색하려면 메뉴 표시줄에서 위로 및 아래로 버튼을 클릭하십시오. 마우스로 문서를 직접 클릭할 수도 있습니다.
diff 탐색 버튼이 강조 표시된 Meld 프로그램의 스크린샷.

Meld에서 파일 조작

비교하는 것 외에도 Meld를 ​​사용하면 비교된 파일을 변경할 수 있습니다. Meld는 두 버전 중 하나를 수정할 때 문서의 변경 사항을 계속 분석하며 언제든지 Ctrl+를 눌러 변경 사항을 취소할 수 있습니다.Z

  • 한 파일에서 다른 파일로 변경 사항을 복사하려면 변경 사항 사이에 있는 작은 검정색 화살표를 클릭하십시오. 예를 들어 왼쪽에 있는 화살표를 클릭하면 왼쪽 문서의 줄을 사용하여 오른쪽 문서를 덮어씁니다.
차이점 해결 버튼을 보여주는 Meld 프로그램의 스크린샷.
  • 덮어쓰지 않고 문서에 줄을 삽입할 수도 있습니다. 키를 누르고 있으면 Ctrl마지막 단계의 화살표가 더하기 기호로 바뀌는 것을 볼 수 있습니다. 아이콘을 클릭하면 새 줄을 삽입할 위치를 선택할 수 있는 작은 대화 상자가 열립니다.
diff 추가 프롬프트를 보여주는 Meld 프로그램의 스크린샷.
  • 마지막으로 문서에 직접 입력합니다. 평소처럼 커서를 삽입하고 입력을 시작하면 됩니다.
  • 변경을 마치면 “저장” 버튼을 클릭하여 파일을 저장합니다.
파일별 저장 버튼이 강조 표시된 Meld 프로그램의 스크린샷.

Meld 및 diff를 사용하여 diff 파일 만들기

두 파일의 차이점을 보여주는 것 외에도 Meld를 ​​사용하여 “diff 파일”을 만들 수도 있습니다. 이것은 한 파일 버전에서 다른 파일 버전으로 변경 사항을 적용하는 방법에 대한 지침이 포함된 작은 텍스트입니다. 이는 전체 소스 아카이브를 다시 공유하지 않고 코드 업데이트를 신속하게 배포하려는 경우에 유용합니다.

  • 비교하려는 두 파일을 엽니다.
간단한 diff를 보여주는 Meld 프로그램의 스크린샷.
  • 창의 오른쪽 상단 모서리에 있는 옵션 메뉴를 클릭합니다.
Meld의 옵션 버튼을 강조하는 스크린샷.
  • “비교” 하위 메뉴를 선택합니다.
비교 하위 메뉴가 강조 표시된 Meld의 옵션 메뉴 스크린샷.
  • “패치로 포맷” 하위 옵션을 클릭합니다.
형식 하위 옵션이 강조 표시된 비교 하위 메뉴의 스크린샷.
  • 그러면 Meld가 두 파일 사이의 전체 diff 파일을 인쇄하는 작은 창이 열립니다. 이 시점에서 이 텍스트를 클립보드에 복사하거나 파일에 저장할 수 있습니다. 후자를 수행하려면 “패치 저장” 버튼을 클릭하십시오.
하이라이트가 있는 Meld's Patch 하위 창의 스크린샷

Meld 내에서 diff 파일을 만드는 것은 간단하고 간단하지만 코드를 편집하는 동안 GUI에 액세스할 수 없는 경우가 있습니다. diff이를 위해 프로그램을 사용하여 diff 파일을 생성 할 수도 있습니다 .

  • 터미널을 열고 두 파일 간에 차이점이 있는지 확인합니다.

diff hello.c hello-1.c

두 파일 간의 간단한 diff를 보여주는 터미널.
  • 다음 플래그 를 사용하여 간단한 diff 파일을 만듭니다 -c.

diff -c hello.c hello-1.c > hello.diff

기본 diff 파일 출력을 보여주는 터미널.
  • 선택적으로 -u두 개의 텍스트 스트림을 단일 통합 diff 블록으로 결합하는 옵션을 사용하십시오. 이것은 많은 코드를 변경하고 디스크 공간을 절약하려는 경우에 유용할 수 있습니다.

diff -u hello.c hello-1.c > hello.diff

더 복잡한 통합 diff 출력을 보여주는 터미널.

diff 파일을 사용하여 소스 코드 패치

위에서 설명한 것처럼 diff 파일을 사용하면 소스 코드에 대한 변경 사항을 쉽게 공유할 수 있는 요약으로 만들 수 있습니다. 그러나 diff 자체는 이를 기존 파일에 적용할 수 없습니다. 그렇게 하려면 diff의 컴패니언 프로그램인 patch.

  • diff 파일이 변경하려는 원본 소스 코드를 확인합니다.

cat hello.diff | sed 1q

원본 소스 파일의 헤더를 보여주는 터미널.
  • 원본 소스 코드의 백업을 만듭니다.

cp hello.c hello.c.old

  • 첫 번째 인수의 원본 파일과 두 번째 인수의 diff 파일로 패치 프로그램을 실행합니다.

patch hello.c hello.diff

단일 소스 파일에 대한 간단한 패치 명령을 보여주는 터미널.

diff 파일에는 여러 파일에 걸쳐 있는 변경 사항도 포함될 수 있다는 점에 유의해야 합니다. 업데이트에 필요한 모든 파일을 단일 디렉토리에 배치하고 patch < multi-file.diff.

  • 패치 프로그램이 소스 파일을 백업과 비교하여 성공적으로 업데이트했는지 확인하십시오.

diff -y hello.c hello.c.old

새 소스 파일과 원본 소스 파일 간의 시각적 차이점을 보여주는 터미널.

참고: Git은 강력한 크로스 플랫폼 버전 제어 프로그램입니다. 이를 사용하여 Linux에서 소스 코드 리포지토리를 관리하는 방법을 알아보십시오 .

자주 묻는 질문

파일을 여러 번 패치할 수 있습니까?

예. 그러나 diff 파일 내부의 줄 번호 값은 정적이라는 점에 유의해야 합니다. 예를 들어 1행에 5행의 코드를 추가하는 diff를 적용하면 전체 파일이 5행씩 조정됩니다. 최신 도구는 단일 diff의 변경 사항을 보상할 수 있지만 둘 이상을 적용하면 불필요한 코드 충돌이 발생할 수 있습니다.

diff 파일은 Git 패치와 비슷합니까?

예. diff와 Git 모두 코드 패치에 유사한 유형의 형식을 사용합니다. 결과적으로 소스 코드에 업데이트를 적용할 때 두 유틸리티를 교환할 수 있습니다. 예를 들어 running 은 git apply hello.diffrunning 과 동일합니다 patch < hello.diff.

Git과 같은 버전 제어 프로그램과 함께 Meld를 ​​사용할 수 있습니까?

예. Meld의 가장 강력한 기능 중 하나는 모든 버전 제어 프로그램과 투명하게 작동할 수 있다는 것입니다. 이렇게 하면 터미널 인터페이스 외부에서 리포지토리와 쉽게 상호 작용할 수 있습니다.

이렇게 하려면 Ctrl+ 를 누른 N다음 “Version control view” 버튼을 클릭합니다. 그런 다음 그 아래의 드롭다운 상자를 클릭하고 “기타”를 선택합니다. 이렇게 하면 Git 리포지토리를 보고 로드할 수 있는 작은 창이 나타납니다.

이미지 크레디트: Unsplash . Ramces Red의 모든 스크린샷.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다