cmp 명령의 반환 값은 무엇입니까?

cmp 명령의 반환 값은 무엇입니까?

저는 Ubuntu에서 이 명령을 사용하고 cmp있으며 반환 값에 대해 좀 더 명확하게 설명하고 싶습니다.

매뉴얼 ( $ man cmp)에는 반환 값에 대한 언급이 없지만 GNU 문서를 확인하는 것이 좋습니다. 실제로 다음과 같이 $ info cmp말합니다.

종료 상태가 0이면 차이점이 발견되지 않았음을 의미하고, 1은 일부 차이점이 발견되었음을 의미하며, 2는 문제가 있음을 의미합니다.

(찾을수있다여기서 온라인으로, 같은 문장).

0과 1 값을 이해하지만 어떤 상황에서 cmp값 2가 반환됩니까? 아직 명확하지 않습니다.

cmp컨텍스트: 두 파일이 동일한지 확인하기 위해 명령을 사용하고 있는데 2가 반환되면 어떻게 해야 하는지 알고 싶습니다.

버전:

$ cmp --version
cmp (GNU diffutils) 3.7

답변1

GNU가 비교를 수행하지 못하게 하는 오류가 발생하면 GNU는 종료 상태 2로 종료됩니다. cmp예를 들어 하나 또는 두 파일을 모두 찾을 수 없거나 읽을 수 없는 경우:

$ cmp asntohe asoneth
cmp: asntohe: No such file or directory
$ echo "$?"
2

POSIX 표준 사양cmp종료 상태가 "1보다 큼"이고 "오류"가 발생하면 유틸리티가 종료되어야 함을 나타냅니다.

답변2

종료 상태 2는 cmp비교를 수행할 수 없음을 의미합니다. 예를 들어 하나 또는 두 파일을 모두 읽을 수 없기 때문입니다. 이는 파일 이름 중 하나가 디렉터리를 가리키거나, 파일이 존재하지 않거나, 해당 파일을 읽을 수 있는 권한이 없는 경우 등에 발생할 수 있습니다.

이는 완전한 것은 아니며, cmp비교를 수행할 메모리가 충분하지 않은 경우에도 실패할 수 있습니다.

답변3

cmp-z또한 정의되지 않은 옵션(예: 또는 --foo) 또는 세 개 이상의 파일 이름(또는 )과 같이  잘못된 명령줄에 지정한 경우에도 상태 2로 종료됩니다.아니요 파일 이름). 그럼에도 불구하고 문제를 설명하는 오류 메시지가 표시됩니다.

답변4

cmps의 종료 상태는 2이며, 이는 "복구할 수 없는 오류, 포기합니다"를 의미합니다. cmp"동일" 또는 "다름"을 제외한 모든 종료 상태를 다룹니다 .

"한 가지 일을 잘한다"는 유닉스 전통에 따라 cmp두 파일을 비교합니다. 일반적인 진단 도구는 아닙니다.

유닉스 초기에는 cmp더 작은 바이너리를 갖는 것이 유리했습니다. "기능 크리프"를 피하면 소형화에 도움이 됩니다.

관련 정보