Linux 에서 diff 명령 상세 설명

9340 단어 linux
원본 링크:http://www.zhlwish.com/2012/03/05/linux-dif/
패 치 사용.파일 a. c 의 내용 은 다음 과 같 습 니 다.
#include 
 
int main(int argc, char *argv[])
{
    // add code here
    return 0;
}

파일 b. c 의 내용 은 다음 과 같 습 니 다.
#include 
 
int main(int argc, char *argv[])
{
    printf("Hello world");
    return 0;
}

명령 실행:
diff a.c b.c > b.patch

출력 b. patch 의 내용 은 다음 과 같 습 니 다.
5c5
<     // add code here 
--- 
>     printf("Hello world");

다음 명령 을 실행 하면 patch 파일 b. patch 를 a. c 파일 에 적용 하여 a. c 파일 의 내용 을 새로운 버 전 으로 업데이트 할 수 있 습 니 다 (즉 b. c)
patch a.c b.patch

a. c 의 내용 이 b. c 로 업 데 이 트 된 내용:
#include 
 
int main(int argc, char *argv[])
{
    printf("Hello world");
    return 0;
}

그러나 diff 의 출력 은 읽 기 에 매우 힘 이 들 지 않 습 니 다. 왜냐하면 이 출력 은 원래 보 여 주 는 것 이 아니 기 때 문 입 니 다. 만약 에 ed 편집기 의 용법 을 조금 알 고 있다 면 쉽게 이해 할 수 있 습 니 다.처음에 diff 의 출력 은 이런 형식 이 아니 었 습 니 다. 나중에 ed 편집기 의 영향 을 받 아 이렇게 되 었 습 니 다. 그 발전 과정 에 대해 서 는 위 키 피 디 아 로 이동 하 십시오. 따라서 diff 의 출력 을 설명 하기 전에 ed 편집 기 를 간단하게 소개 하 십시오.
편집기
ed 는 대화 형 텍스트 편집기 입 니 다. 유 닉 스 시스템 에는 신기 한 편집기 가 많 습 니 다. 신기 라 고 불 리 는 vi, vim, emacs, 그리고 일반적인 의미 의 편집기 nano, gedit, 그리고 이상 하 게 보 이 는 sed (StreamEditor), awk, ed 는 또 다른 기괴 한 편집기 입 니 다. 앞의 어떤 것 과 도 다 릅 니 다.
셸 을 열 고 다음 명령 을 순서대로 입력 하 십시오. (한 마디 한 마디 두 드 려 야 합 니 다)
touch c.c
ed c.c
0a
#include 
int main(int argc, char *argv[])
{
    // add code here
    return 0;
}
.
w
q

cat 명령 을 사용 하여 c. c 를 보십시오. 이 파일 의 내용 은 위 코드 의 '0a' 와 '.' 이전 코드 입 니 다.
vim 와 마찬가지 로 ed 는 일련의 명령 을 통 해 파일 을 편집 합 니 다.
  • "ed c. c" 는 ed 로 파일 c. c 를 편집 하 는 것 을 나타 낸다
  • "0a" 는 0 줄 뒤에 추가 하 는 것 을 나타 낸다 (a 는 add 를 표시 하고, 마찬가지 로 d 는 삭 제 를 표시 하고, c 는 수정 을 표시 한다)
  • 이어서 추가 할 내용 을 입력 하고 입력 이 완료 되면 줄 을 바 꾸 어 입력 하 십시오. "(리 턴 표시) 입력 이 완료 되 었 음 을 표시 합 니 다
  • "w" 를 입력 하면 파일 저장 표시
  • "q" 를 입력 하면 편집기 종료
  • ed 편집기 의 장점 은 일련의 명령 을 파일 로 작성 한 다음 에 대량으로 실행 할 수 있다 는 것 이다.예 를 들 어 모든 소스 코드 시작 에 저작권 정 보 를 추가 해 야 한다 면 다음 과 같은 ed 파일 을 작성 하여 add 로 저장 할 수 있 습 니 다.header:
    0a
    /**
     * © 2012 zhlwish.com
     */
    .
    w
    q

    그 다음 에 셸 스 크 립 트 를 써 서 소스 코드 파일 을 옮 겨 다 니 며 각 코드 에 다음 코드 를 실행 하면 소스 코드 파일 에 저작권 정 보 를 대량으로 추가 할 수 있 습 니 다.
    ed a.c < add_header

    ed 의 명령 과 다른 방법 에 대해 서 는 유 닉 스 ed Editor Command Set 을 참고 하 십시오.
    diff 출력
    diff 의 출력 형식 은 ed 스 크 립 트 (ed script) 에 대한 확장 입 니 다. ed 의 명령 문법 에 따라 추가 되 었 습 니 다. "새 파일 의 내용 과 오래된 파일 의 내용 을 표시 하 는 데 사 용 됩 니 다. 예 를 들 어 앞에서 diff 의 출력 은 다음 과 같이 이해 할 수 있 습 니 다.
  • "5c5" 는 a. c 의 다섯 번 째 줄 이 변경 되 었 음 을 나타 낸다 (change). 변경 후 b. c 의 다섯 번 째 줄
  • "< / add code here" 는 a. c 의 다섯 번 째 줄 의 내용 을 나타 낸다
  • "-" 구분자 입 니 다
  • "> printf (" Hello world ");" b. c 파일 의 다섯 번 째 줄 내용 표시
  • 물론 '3c3, 6', '6d8' 등 더 복잡 한 경우 도 있다. 전 자 는 구 버 전 파일 의 세 번 째 줄 이 수정 되 었 고 새 파일 의 세 번 째 줄 에 대응 하 며 후 자 는 구 버 전 파일 의 여섯 번 째 줄 이 삭제 되 었 고 새 파일 에서 여덟 번 째 줄 이 라 고 밝 혔 다.
    매개 변 수 를 통 해 diff 출력 형식 을 지정 할 수 있 고 관심 이 있 는 필 자 는 각각 시도 할 수 있 습 니 다.
  • - e – ed 출력 은 ed 명령 형식
  • - n – rcs 출력 은 rcs 명령 형식
  • - y 출력 은 두 열 대조 모드
  • - c 출력 은 컨 텍스트 모드
  • diff 옵션
    상기 옵션 을 제외 하고 diff 의 유용 한 옵션 은 다음 과 같 습 니 다.
  • - r: diff 의 인자 가 폴 더 일 때 diff 는 전체 폴 더 를 옮 겨 다 니 며 새 폴 더 의 같은 이름 의 파일 을 비교 합 니 다
  • - w: 모든 빈 칸 과 탭 문 자 를 무시 하고 다른 모든 빈 문자열 을 일치 시 킵 니 다.예 를 들 어 if (a = = b) 는 if (a = = b) 와 같다.
  • - i: 알파벳 대소 문 자 를 무시 합 니 다.예 를 들 어 소문 자 a 는 대문자 A 와 같다 고 여 겨 진다.

  • 성문 이 급박 하기 때문에 잘못된 점 이 있 을 수 밖 에 없 으 니, 독자 의 지적 을 바 랍 니 다.(전문 완료)

    좋은 웹페이지 즐겨찾기