Как копировать файлы через/вне символических ссылок? (dest)

Как копировать файлы через/вне символических ссылок? (dest)

Предположим, у меня есть такая файловая система:

/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

Я не вижу файл 1. Ищу его, нахожу его в/home/me/dir1/dir2/dir3/dir4/dir5/file1

Похоже, он cpне понял, что находится внутри символического каталога.

Как мнеcp снаружисимволическая папка?

Или как мне дать cpпонять, что ../нужно разыменовать (гдеместо назначенияв странице руководства указана ссылка)?

Я что-то упустил? Это вообще возможно?

Спасибо!

(последнее замечание — фактический вариант использования — это глубокая структура каталогов внутри одного каталога символической ссылки, попытка скопировать файл ../another-symlink-directory/ без ввода полных путей — это одна из целей символических ссылок, насколько я понимаю)

решение1

На самом деле вы перешли по ссылке с cd linkdir6. Вы действительно находитесь в этом каталоге, поэтому ../ находится на один уровень выше, в dir5.

Самый безопасный способ с cp — находиться в целевом каталоге. Затем используйте ссылку, чтобы перейти к исходному файлу.

cd ~/me/dir1  #.. Target
cp linkdir6/file1 .

Лично я предпочитаю опцию -t (target) в cp.

cp -t ~/me/dir1 dir1/linkdir6/file1

решение2

$ cp file1 "$(cd .. && pwd -P)"

Видетьэтот ответ.

Связанный контент