%20.png)
다음과 같은 파일 시스템이 있다고 가정해 보겠습니다.
/home/me/dir1/dir2/dir3/dir4/dir5/dir6/file1
그런 다음 에서 /home/me/dir1
심볼릭 링크를 만듭니다.
$ cd /home/me/dir1
$ ln -s /home/me/dir1/dir2/dir3/dir4/dir5/dir6 linkdir6
file1을 내 홈 디렉터리에 복사하려고 합니다(이것은 간단한 예이며 이보다 더 복잡합니다. "/home/me/"는 실제로 훨씬 더 복잡한 디렉터리 구조이므로 "~/"는 해결책이 아닙니다).
$ cd linkdir6
$ cp file1 ../
$ cd ..
$ ls
dir2 linkdir6
file1이 보이지 않습니다. 검색해보니 에서 나오네요/home/me/dir1/dir2/dir3/dir4/dir5/file1
cp
그것이 상징적 디렉토리 안에 있다는 것을 깨닫지 못한 것 같습니다 .
내가 어떻게 할cp
밖으로상징적인 폴더?
또는 역참조되어야 한다는 cp
것을 어떻게 이해합니까 (여기서../
목적지매뉴얼 페이지에서는 연기됩니다)?
뭔가 빠졌나요? 이것이 가능합니까?
감사해요!
(마지막 참고 사항 - 실제 사용 사례는 전체 경로를 입력하지 않고 ../another-symlink-directory/ 파일을 복사하려고 시도하는 하나의 Symlink 디렉토리 내의 깊은 디렉토리 구조에 있습니다. 이는 심볼릭 링크의 요점 중 하나입니다. 나 걱정 되)
답변1
실제로 cd linkdir6
. 당신은 실제로 그 디렉토리에 있으므로 ../는 거기에서 한 레벨 위인 dir5에 있습니다.
cp를 사용하는 가장 안전한 방법은 대상 디렉터리에 있는 것입니다. 그런 다음 링크를 사용하여 소스 파일로 이동합니다.
cd ~/me/dir1 #.. Target
cp linkdir6/file1 .
개인적으로 나는 cp에서 -t(target) 옵션을 선호합니다.
cp -t ~/me/dir1 dir1/linkdir6/file1
답변2
$ cp file1 "$(cd .. && pwd -P)"
보다이 답변.