Linux에서 Diff 파일을 사용하는 방법
Diff는 Unix 시스템용 명령줄 도구로 두 개의 파일 또는 디렉터리를 비교하고 차이점을 확인할 수 있습니다. 파일의 이전 버전과 새 버전을 비교하여 무엇이 변경되었는지 확인하는 데 이상적입니다. diff
이 기사에서는 Linux에서 파일을 쉽게 비교하는 데 사용할 수 있는 방법을 보여줍니다 .
diff로 파일 비교
- 터미널 창을 엽니다.
diff
비교하려는 두 파일의 경로를 입력합니다 . 이 경우 다음 명령을 사용하여 데스크톱에서 두 개의 작은 C 프로그램을 비교하고 있습니다.
diff ~/Desktop/hello.c ~/Desktop/hello-1.c
- Enter명령을 제출하려면 누르십시오 . 결과 화면에는 파일 사이의 모든 다른 줄이 표시됩니다. 비교한 줄 번호는 “1c1″로 표시되며 이는 첫 번째 줄이 변경되었음을 의미하며 다음과 같은 차이점이 발견되었습니다.
- 파일과 그 차이점을 나란히 보기 위해
-y
뒤에 플래그를 사용하십시오diff
. 예를 들어:
diff -y ~/Desktop/hello.c ~/Desktop/hello-1.c
파이프 기호( |
)가 있는 선은 차이가 있는 선입니다. 먼저 터미널 창을 확장해야 합니다. 그렇지 않으면 디스플레이를 보는 데 어려움을 겪을 수 있습니다.
파일을 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는 두 버전 중 하나를 수정할 때 문서의 변경 사항을 계속 분석하며 언제든지 Ctrl+를 눌러 변경 사항을 취소할 수 있습니다.Z
- 한 파일에서 다른 파일로 변경 사항을 복사하려면 변경 사항 사이에 있는 작은 검정색 화살표를 클릭하십시오. 예를 들어 왼쪽에 있는 화살표를 클릭하면 왼쪽 문서의 줄을 사용하여 오른쪽 문서를 덮어씁니다.
- 덮어쓰지 않고 문서에 줄을 삽입할 수도 있습니다. 키를 누르고 있으면 Ctrl마지막 단계의 화살표가 더하기 기호로 바뀌는 것을 볼 수 있습니다. 아이콘을 클릭하면 새 줄을 삽입할 위치를 선택할 수 있는 작은 대화 상자가 열립니다.
- 마지막으로 문서에 직접 입력합니다. 평소처럼 커서를 삽입하고 입력을 시작하면 됩니다.
- 변경을 마치면 “저장” 버튼을 클릭하여 파일을 저장합니다.
Meld 및 diff를 사용하여 diff 파일 만들기
두 파일의 차이점을 보여주는 것 외에도 Meld를 사용하여 “diff 파일”을 만들 수도 있습니다. 이것은 한 파일 버전에서 다른 파일 버전으로 변경 사항을 적용하는 방법에 대한 지침이 포함된 작은 텍스트입니다. 이는 전체 소스 아카이브를 다시 공유하지 않고 코드 업데이트를 신속하게 배포하려는 경우에 유용합니다.
- 비교하려는 두 파일을 엽니다.
- 창의 오른쪽 상단 모서리에 있는 옵션 메뉴를 클릭합니다.
- “비교” 하위 메뉴를 선택합니다.
- “패치로 포맷” 하위 옵션을 클릭합니다.
- 그러면 Meld가 두 파일 사이의 전체 diff 파일을 인쇄하는 작은 창이 열립니다. 이 시점에서 이 텍스트를 클립보드에 복사하거나 파일에 저장할 수 있습니다. 후자를 수행하려면 “패치 저장” 버튼을 클릭하십시오.
Meld 내에서 diff 파일을 만드는 것은 간단하고 간단하지만 코드를 편집하는 동안 GUI에 액세스할 수 없는 경우가 있습니다. diff
이를 위해 프로그램을 사용하여 diff 파일을 생성 할 수도 있습니다 .
- 터미널을 열고 두 파일 간에 차이점이 있는지 확인합니다.
diff hello.c hello-1.c
- 다음 플래그 를 사용하여 간단한 diff 파일을 만듭니다
-c
.
diff -c hello.c hello-1.c > hello.diff
- 선택적으로
-u
두 개의 텍스트 스트림을 단일 통합 diff 블록으로 결합하는 옵션을 사용하십시오. 이것은 많은 코드를 변경하고 디스크 공간을 절약하려는 경우에 유용할 수 있습니다.
diff -u hello.c hello-1.c > hello.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.diff
running 과 동일합니다 patch < hello.diff
.
Git과 같은 버전 제어 프로그램과 함께 Meld를 사용할 수 있습니까?
예. Meld의 가장 강력한 기능 중 하나는 모든 버전 제어 프로그램과 투명하게 작동할 수 있다는 것입니다. 이렇게 하면 터미널 인터페이스 외부에서 리포지토리와 쉽게 상호 작용할 수 있습니다.
이렇게 하려면 Ctrl+ 를 누른 N다음 “Version control view” 버튼을 클릭합니다. 그런 다음 그 아래의 드롭다운 상자를 클릭하고 “기타”를 선택합니다. 이렇게 하면 Git 리포지토리를 보고 로드할 수 있는 작은 창이 나타납니다.
이미지 크레디트: Unsplash . Ramces Red의 모든 스크린샷.
답글 남기기