cp -r
파일을 재귀적으로 복사하고 cp -R
디렉터리를 재귀적으로 복사하는 것을 의미합니다. 하지만 확인해 보니 둘 다 파일과 디렉터리를 복사하는 것 같고 같은 것입니다. 그렇다면 실제로 차이점은 무엇입니까?
답변1
-R
posix는 잘 정의되어 있지만 이식성 -r
이 없습니다!
Linux에서 및 구현은 GNU 및 BusyBox 에서 동일 cp
합니다 .-r
-R
반면에 가능한 한POSIXcp
동작 에 대한 매뉴얼 페이지 -r
는 다음과 같습니다.구현 정의.
* If neither the -R nor -r options were specified, cp shall take actions based on the type and contents of the file referenced by the symbolic link, and not by the symbolic link itself. * If the -R option was specified: * If none of the options -H, -L, nor -P were specified, it is unspecified which of -H, -L, or -P will be used as a default. * If the -H option was specified, cp shall take actions based on the type and contents of the file referenced by any symbolic link specified as a source_file operand. * If the -L option was specified, cp shall take actions based on the type and contents of the file referenced by any symbolic link specified as a source_file operand or any symbolic links encoun- tered during traversal of a file hierarchy. * If the -P option was specified, cp shall copy any symbolic link specified as a source_file operand and any symbolic links encoun- tered during traversal of a file hierarchy, and shall not follow any symbolic links. * If the -r option was specified, the behavior is implementation- defined.
답변2
소문자는 -r
4.1BSD에 도입된 오래된 옵션으로, 디렉토리가 아닌 모든 항목을 파일로 복사합니다. 즉, 장치나 FIFO를 만나면 이를 열고 내용을 읽고 대상에 내용이 포함된 파일을 생성합니다.
대문자는 장치, FIFO 또는 기타 특수 파일이 발견될 때 대상에 동등한 특수 파일을 생성하는 -R
표준화된 옵션(4.4BSD에서 BSD에 도입되었지만 이전 버전에서는 동의어로 사용됨)입니다 .-r
많은 구현에서는 여전히 이러한 구별을 유지하지만 일부(일반적인 GNU 버전의 Linux 포함)는 동의어로만 의미 체계를 제공 -R
합니다 -r
.
답변3
차이점은 하나는 소문자 "R"을 사용하고 다른 하나는 대문자 "R"을 사용한다는 것입니다. 그 외에는 차이가 없습니다. 긴 옵션을 사용하는 경우에도 --recursive
마찬가지입니다 .
답변4
내가 찾은 차이점 중 하나는 -r은 숨겨진 디렉터리를 복사하지 않는 반면 -R은 숨겨진 디렉터리를 복사한다는 것입니다.
대상 디렉터리에서 .git 디렉터리를 테스트한 결과 위의 결론에 도달했습니다. 현재 CentOS를 사용하고 있습니다.
내가 틀렸을 수도 있지만 토론의 여지가 있습니다.