금요일 터미널 : 패치 및 차이

소프트웨어 개발의 두 가지 필수 도구는 다음과 같습니다. 패치 y 비교. 작동 방식은 미스터리가 아니지만 흥미로운 게시물이 될 것 같습니다. 🙂

둘 다 매우 강력하며 표면을 만지는 것과 같으며 더 많은 유틸리티와 기타 기능이 있습니다. 기본적으로이 두 도구를 사용하여 버전 제어를 생성 할 수 있습니다.


비교

우리는 비교를 참조하고 "원본"파일을 "새"파일과 비교하고 그 사이에 존재하는 차이점을 알려줍니다. 이 도구를 사용하면 프로그램 용 패치를 만드는 데 사용하는 .patch 파일을 만들 수도 있습니다.


패치

.patch 파일에 포함 된 지침에 따라 줄을 추가 및 / 또는 제거하여 원래 파일을 문자 그대로 "패치"하는 명령입니다.


또한 거기에 Vimdiff, "원본"과 "새"를 비교하고 동일한 파일에서 한 줄씩 또는 전체 문서를 편집 할 수 있기 때문에 .patch 파일없이 패치를 적용하는 시각적 도구입니다. 이것은 설명하지 않지만 언급 할 가치가 있다고 생각합니다.


이제 재미가 있습니다. 예!

이 경우, 우리는 귀하의 이름과 나이를 묻는 훌륭한 스크립트를 가지고 있습니다. 18 세 이상이면 투표 할 수 있음을 알리고 그렇지 않으면 투표 할 수 없다고 알려줍니다.

원본.sh

#! / bin / bash echo "Enter your name :"read name echo "Enter your age :"read age if [[18 -lt $ age]] then echo "Hello $ name, you are $ old and you can vote! " else echo "안녕하세요 $ 이름, 당신은 $ 늙었 고 투표 할 수 없습니다 ..."fi
Vim의 코드 이미지

Vim의 코드 이미지

완료, 실행중인 스크립트는 다음과 같습니다.

모든 것이 잘 작동하는 것 같습니다.

모든 것이 잘 작동하는 것 같습니다.

그래서 우리는 좋은 사용자로서 우리의 스크립트를 친구와 공유합니다. :)하지만 결함이 있다는 메시지를받습니다. 18 일 때 투표해야 할 때 투표 할 수 없다는 메시지를받습니다.

논리 오류 :(

논리 오류 🙁

이제 우리는 작은 오류를 수정하고 몇 가지 수정을 시작합니다 ...

new.sh

#! / bin / bash maxAge = 18 echo "이름 입력 :"; read name echo "당신의 나이 :"; 나이 읽기 if [[$ maxAge -le $ age]]; then echo "안녕하세요 $ name, 당신은 $ 살이고 투표 할 수 있습니다!" else echo "안녕하세요 $ name, 당신은 $ 살이고 투표 할 수 없습니다 ..."fi exit 0
Vim으로 작성된 새로운 코드

작성된 새 코드 정력

스크립트가 매우 무겁다 고 가정합니다. 따라서 전체 스크립트를 다시 보내지 않기 위해 .patch를 만듭니다 😀

$ diff -u original.sh new.sh> patch.patch

이제 패치가 생겼습니다. 여기에 대한 견해가 있습니다. 정력:

.patch에 대한 지침은 다음과 같습니다. 흰색으로 수정되지 않은 선, 파란색으로 제거 된 선, 주황색으로 추가 된 선입니다.

.patch에 대한 지침은 다음과 같습니다. 흰색으로 수정되지 않은 선, 파란색으로 제거 된 선, 주황색으로 추가 된 선입니다.

그리고 그것을 적용하기 위해 우리는 간단히 패치 할 스크립트의 .patch 파일을 사용합니다. 여기에 원본Amigo.sh, 스크립트의 정확한 사본입니다. 원본.sh

친구 스크립트

친구 스크립트

$ 패치 originalFriend.sh <patch.patch

그리고 이것은 우리에게 파일을 남깁니다. 원본Amigo.sh 그래서:

패치 적용 후 친구 스크립트

패치 적용 후 친구 스크립트

보시다시피 차이점을 얻고 패치를 적용하는 것은 매우 쉽습니다. 모두 나로부터.

인사 여러분, 다음주 금요일에 읽을 것입니다.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   제 릭스

    좋아요, 대단히 감사합니다 🙂

  2.   엔젤 블레이드

    색상을 원하시는 분은 colordiff를 이용 해주세요 ^^

  3.   엘리오타임3000

    이제 데비안에서 패치가 어떻게 작동하는지 이해합니다.

  4.   fer_pflores

    안녕하세요, 시스템 알림이 콘솔에서 알림 보내기로 표시 될 수 있다는 것을 알고 있지만, 알림을 표시 할 시간 또는 시간을 예약 할 수있는 방법이 있습니까? 도움이 될 수 있도록 Ubuntu 12.04를 기반으로 한 elementary를 사용합니다.

    1.    엘라 브

      음, 시스템 크론을 사용하여 할 수 있습니다 😉

      1.    fer_pflores

        어떻게 할 수 있습니까? notify-send 명령을 사용하는 방법을 방금 배웠습니다.

        1.    세계 반 도핑기구

          블로그에서 cron을 검색 할 수 있습니다. 이에 대한 많은 게시물이 있습니다 🙂

  5.   호아킨

    아주 좋아 고마워!

  6.   사냥꾼

    나는 항상 이것을 사용하여 커널을 업데이트하고 패치 만 다운로드하고 소스에 적용하므로 매 릴리스마다 80MB를 다운로드 할 필요가 없습니다.