이들그리고 의 차이점은 무엇인가요? 그리고 현재 디렉토리는?

이들그리고 의 차이점은 무엇인가요? 그리고 현재 디렉토리는?

현재 디렉터리를 소스로 복사하려고 합니다. 전체 경로를 사용하면 전체 디렉터리를 대상에 복사하는 예상된 동작이 제공됩니다.

$ cd /tmp
$ mkdir a b
$ cd a
$ touch 1 2 3
$ cp -r /tmp/a /tmp/b # use /tmp/a as source
$ ls /tmp/b
a

그러나 .출처를 인용하면콘텐츠디렉토리 자체가 아닌 소스.

$ cd /tmp
$ mkdir c
$ cd a
$ cp -r . /tmp/c # use . as source
$ ls /tmp/c
1 2 3

.현재 디렉터리의 절대 경로와 차이점은 무엇입니까? 현재 디렉터리 자체를 복사하려는 경우 간단한 참조가 있습니까? (내가 볼 수 있는 유일한 방법은 을 사용하는 것인데 ../a, 이는 약간 중복되는 것 같습니다.)

답변1

cp첫 번째 경우에는 내용을 복사하도록 요청하므로 먼저 내용을 복사한 다음 내용을 복사합니다./tmp/a/tmp/ba/tmp/b/aa/tmp/b/a

두 번째 경우에는 위와 동일한 사고 과정을 사용하여 내용을 복사하도록 요청합니다 cp. 이를 첫 번째 복사로 생각할 수 있습니다../tmp/b./tmp/b/. /tmp/b), .내용을 에 복사합니다 /tmp/b/..

현재 디렉토리의 이름이 다를 수 있으므로(심볼릭 링크 사용) 모든 경우에 작동하는 현재 디렉토리에 대한 짧은 참조는 없습니다. 내 생각에 당신이 얻을 수 있는 가장 가까운 것은 $PWD.

답변2

를 사용하면 .특정한 이점이 있습니다 . 예를 들어, 디렉터리가 이미 대상으로 존재하는지 여부를 신경 쓰지 않고 디렉터리를 복사할 수 있습니다(상위 디렉터리가 있어야 함).

/tmp/target명령이 기존 디렉터리인지 여부 에 따라

cp -a /path/to/source/dir /tmp/target

다른 결과를 가져옵니다. 하지만

cp -a /path/to/source/dir/. /tmp/target

두 경우 모두 동일한 결과가 나타납니다.

관련 정보