현재 디렉터리를 소스로 복사하려고 합니다. 전체 경로를 사용하면 전체 디렉터리를 대상에 복사하는 예상된 동작이 제공됩니다.
$ 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/b
a
/tmp/b/a
a
/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
두 경우 모두 동일한 결과가 나타납니다.