какова цель cp -s?

какова цель cp -s?

как показывает ответ на этот вопрос, Есть ли разница между жесткими ссылками с помощью cp -l или ln?

Цель создания опции -l для команды cp - рекурсивно создать жесткие ссылки (на содержимое) каталогов. Опция -s является аналогом, создавая мягкие ссылки вместо жестких ссылок, но, похоже, ее нельзя использовать рекурсивно.

Любая попытка сделать это приведет к сообщению об ошибке:

cp: `source_dir/source_file': can make relative symbolic links only in current directory

Возможно, это зависит от дистрибутива. В Ubuntu 12.04 это результат. Работает только если исходный файл и ссылка находятся в одном каталоге.

Возможно, синтаксис неверен? cp -rs target_directory destination_directory- это то, что я использовал.

пример:

$ ls sourcedir/             
-rw-rw---- 1 user group 1123 Jan  8 23:10 source_file
$ cp -rs sourcedir/ targetdir/
cp: `targetdir/sourcedir/source_file': can make relative symbolic links only in current directory

решение1

Указан абсолютный путь к исходному каталогу:

cp -rs $PWD/sourcedir/ targetdir/

Символические ссылки в targetdirэтом случае будут содержать абсолютные пути к sourcedir.

В противном случае, если бы он просто создал символическую ссылку, он бы создал что-то вроде:

targetdir/filename -> sourcedir/filename

Но это не правильный относительный путь для поиска исходного файла, он должен быть таким:

targetdir/filename -> ../sourcedir/filename

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

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