TL;DR
- GNU
coreutils에서는-r과-R이 모두 디렉터리를 재귀적으로 복사하는 옵션이며, 과거에는 동작에 차이가 있었지만 2002년 병합 이후 동일함. - 1992년 GNU
coreutils최초 커밋에서-r은 복사 대상을 일반 파일처럼 처리했고,-R은 그렇지 않았음. - OpenBSD 7.9는 매뉴얼에서
-R만 나열하고-r사용을 강하게 권하지 않으며, 두 옵션의 동작 차이를 명시함. - NetBSD 11도 매뉴얼과 코드에서 OpenBSD와 같은 방식을 취함.
-R은chown등 다른 유틸리티의 재귀 옵션과 일관되며, POSIX.1-2024도-R을 권장하고-r은 표준에서 제외함.
GNU coreutils의 `-r`과 `-R`
- 요즘 GNU
coreutils에서는 두 옵션에 차이가 없으며, 현재 매뉴얼은-R,-r,--recursive를 함께 제시하고 모두 디렉터리를 재귀적으로 복사한다고 설명함. - 1992년 GNU
coreutils최초 커밋의src/cp.c에서는-r을 선택하면 재귀 복사를 활성화하고 복사 대상을 일반 파일처럼 처리하도록 설정했으며,-R을 선택하면 재귀 복사만 활성화했음. - 따라서 당시에는 두 옵션의 동작 차이가 있었지만, 2002년 두 옵션이 병합되어 오늘날에는 그 차이가 없으며, 24년 전 버전의
coreutils를 사용하는 경우도 없음.
OpenBSD와 NetBSD
- OpenBSD 7.9 매뉴얼은
-R만 나열하고-r사용을 강하게 권하지 않음. 다만-r이 여전히-R과 다르게 동작한다고 명시함. - OpenBSD 코드를 살펴보면
Rflag과rflag에서 몇 가지 차이를 확인할 수 있음. - NetBSD 11도 매뉴얼과 코드에서 OpenBSD와 같은 방식을 취함.
`-R`을 권장하는 이유
-R의 장점은 여러 유틸리티에서 옵션 표기가 더 일관적이라는 점임. 예를 들어chown은-R을 지원하지만-r은 지원하지 않음.- POSIX도 이러한 일관성을 인정하며
-R을 권장함.
이 표준의 이전 판본은 파일 계층을 복사하는
-r옵션을 지원했음.-r옵션은 BSD 및 BSD 파생 시스템에서 역사적으로 사용된 방식임. 이 옵션은 POSIX.1-2024에서 더 이상 규정하지 않지만 일부 구현에는 남아 있을 수 있음.-R옵션은-r과 거의 동의어로 추가됐으며, POSIX.1-2024의 다른 재귀 디렉터리 탐색 옵션과 일관성을 갖추도록 선택됐음.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요