Cmp (유닉스)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

cmp는 두 파일을 비교하는 유닉스 명령어이다. 1987년 X/Open 이식성 가이드에 포함되었으며, GNU coreutils에도 구현되어 있다. cmp는 파일 내용의 동일성 여부를 판단하고, 다양한 옵션을 통해 비교 방식을 조정할 수 있다. 두 파일이 동일하면 0, 다르면 1, 오류 발생 시 2를 반환한다.

Cmp (유닉스) - [IT 관련 정보]에 관한 문서
기본 정보
유형파일 비교 유틸리티
개발자다양한 오픈 소스 및 상용 개발자
최초 출시일1971년 11월 3일
프로그래밍 언어Plan 9: C
운영 체제유닉스, 유닉스 계열, Plan 9, Inferno, OS-9, IBM i
장르명령어
라이선스coreutils: GPLv3+
Plan 9: MIT 허가서
웹사이트해당 없음
원작자데니스 리치 (AT&T 벨 연구소)
📚 더 읽어볼만한 페이지
  • 파일 비교 도구 - 토탈 커맨더
    토탈 커맨더는 듀얼 패널 인터페이스를 통해 효율적인 파일 관리를 제공하는 파일 관리자 프로그램으로, 윈도우와 안드로이드 등 다양한 플랫폼에서 압축 파일 지원, FTP 클라이언트, 폴더 동기화, 플러그인 지원 등 다양한 기능을 제공한다.
  • 파일 비교 도구 - 윈머지
    윈머지는 텍스트, 폴더, 이미지, 이진 파일을 비교하고 병합하는 오픈 소스 소프트웨어이며, 시각적 차이 표시, 3방향 병합, 텍스트 편집, HTML 보고서 생성 등의 다양한 기능을 제공한다.
  • 표준 유닉스 프로그램 - AWK
    AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다.
  • 표준 유닉스 프로그램 - Rm (유닉스)
    유닉스 명령어 `rm`은 파일을 삭제하는 데 사용되며, 옵션을 통해 삭제 동작을 제어하고 디렉터리를 재귀적으로 삭제할 수 있지만, 잘못 사용하면 시스템에 심각한 손상을 초래할 수 있어 주의가 필요하며 안전 장치나 휴지통 기능 등의 대안이 존재한다.
  • 유닉스 SUS2008 유틸리티 - AWK
    AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다.
  • 유닉스 SUS2008 유틸리티 - 로케일
    로케일은 소프트웨어 국제화 및 지역화에서 사용자 문화적 배경에 맞춰 사용 환경을 조정하는 설정으로, 표시 언어, 숫자/날짜 형식, 문자 분류, 통화 형식 등을 포함한다.

2. 역사

`cmp`는 1987년 2판부터 X/Open 이식성 가이드의 일부였다. 이는 POSIX.1의 첫 번째 버전과 단일 유닉스 규격으로 상속되었다. 처음에는 버전 1 유닉스에 등장했다.

GNU coreutils에 포함된 `cmp` 버전은 토르비욘 그란룬드(Torbjorn Granlund)와 데이비드 매켄지(David MacKenzie)가 작성했다.

이 명령어는 UnxUtils의 일부로, 마이크로소프트 윈도우용 별도 패키지로 제공된다. UnxUtils는 일반적인 GNU 유닉스 계열 유틸리티의 네이티브 Win32 포트 모음이다. `cmp` 명령어는 IBM i 운영 체제로도 포팅되었다.

3. 사용법

`cmp` 명령어는 일반적으로 `cmp [옵션]... 파일1 파일2` 형식으로 사용된다.

`cmp`는 여러 옵션을 통해 동작을 변경할 수 있다. 주요 옵션은 다음과 같다:

* `-b` (`--print-bytes`): 다른 바이트들을 출력한다.
* `-i SKIP` (`--ignore-initial=SKIP`): 입력의 처음 SKIP 바이트들을 건너뛴다.
* `-i SKIP1:SKIP2` (`--ignore-initial=SKIP1:SKIP2`): FILE1의 처음 SKIP1 바이트와 FILE2의 처음 SKIP2 바이트를 건너뛴다.
* `-l` (`--verbose`): 모든 다른 바이트들의 바이트 숫자들과 값들을 출력한다.
* `-n LIMIT` (`--bytes=LIMIT`): 최대 LIMIT 바이트까지만 비교한다.
* `-s` (`--quiet` 또는 `--silent`): 아무것도 출력하지 않고, 종료 상태만 반환한다.
* `-v` (`--version`): 버전 정보를 출력한다.
* `--help`: 도움말 파일을 출력한다.

3.1. 전환 (옵션)

`cmp`는 명령줄 스위치를 사용하여 동작을 변경할 수 있다. `cmp`의 주목할 만한 구현에서 지원하는 스위치는 다음과 같다.

👆
좌우로 밀어서 보기
이름설명유닉스Plan 9인페르노FreeBSD리눅스IBM i
-b,
--print-bytes
다른 바이트를 출력한다. 제어 바이트는 '^' 다음에 알파벳 문자로 표시하고, 상위 비트가 설정된 바이트는 'M-'(meta)로 시작한다.아니요아니요아니요아니요아니요
-h심볼릭 링크를 따르지 않는다.아니요아니요아니요아니요아니요
-i SKIP,
--ignore-initial=SKIP
입력의 처음 SKIP 바이트를 건너뛴다.아니요아니요아니요아니요아니요
-i SKIP1:SKIP2,
--ignore-initial=SKIP1:SKIP2
FILE1의 처음 SKIP1 바이트와 FILE2의 처음 SKIP2 바이트를 건너뛴다.아니요아니요아니요아니요아니요
-l,
--verbose
기본 표준 출력을 사용하는 대신, 다른 모든 바이트의 (10진수) 바이트 번호와 (8진수) 값을 출력한다. 또한, 한 파일이 다른 파일보다 짧은 경우 EOF 메시지를 출력한다.
-L다른 첫 번째 바이트의 줄 번호를 출력한다.아니요아니요아니요
-n LIMIT,
--bytes=LIMIT
최대 LIMIT 바이트를 비교한다.아니요아니요아니요아니요아니요
-s,
--quiet,
--silent
아무것도 출력하지 않는다. 종료 상태만 반환한다.
-t파일이 텍스트 모드로 열리고 바이트 단위로 비교하기 전에 작업의 CCSID로 변환되는 텍스트 모드이다.아니요아니요아니요아니요아니요
-v,
--version
버전 정보를 출력한다.아니요아니요아니요아니요아니요
-x-l과 비슷하지만 16진수로 출력하고 파일의 첫 번째 바이트에 대한 인덱스로 0을 사용한다.아니요아니요아니요아니요아니요
-z일반 파일의 경우 먼저 파일 크기를 비교하고, 크기가 같지 않으면 비교에 실패한다.아니요아니요아니요아니요아니요
--help도움말 파일을 출력한다.아니요아니요아니요아니요아니요

3.1.1. 바이트 수 지정 형식

바이트 개수를 나타내는 피연산자는 일반적으로 10진수이지만, '0'으로 시작하는 8진수 또는 '0x'로 시작하는 16진수로 표현할 수도 있다. 바이트 개수 뒤에 접미사를 붙여 배수를 지정할 수 있는데, 정수를 생략하면 1로 간주된다. 접미사가 없는 크기 문자나 iB영어가 뒤따르는 문자는 1024의 거듭제곱을 사용하여 배수를 지정한다. B영어가 뒤따르는 크기 문자는 1000의 거듭제곱을 지정한다. 예를 들어, '-n 4M'과 '-n 4MiB'는 '-n 4194304'와 동일하며, '-n 4MB'는 '-n 4000000'과 동일하다. 이 표기법은 10진수 배수의 경우 SI 접두어와 2진수 배수의 경우 IEC 60027-2 접두어와 호환된다.

4. 반환값

`cmp` 명령어는 비교 결과에 따라 다음과 같은 종료 상태(반환값)를 반환한다.

👆
좌우로 밀어서 보기
반환값의미
0파일이 동일하다.
1파일이 다르다.
2접근할 수 없거나 인수가 누락됨

5. 예시

두 개의 텍스트 파일 간의 다른 바이트를 찾기 위한 cmp 사용 예시
두 개의 텍스트 파일 간의 다른 바이트를 찾기 위한 cmp 사용 예시