cp -s 的目的是什么?

cp -s 的目的是什么?

正如这个问题的答案所示, 使用 cp -l 或 ln 进行硬链接有区别吗?

为 cp 命令创建 -l 选项的目的是递归地硬链接目录(的内容)。 -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不会尝试弄清楚源目录和目标目录如何相互关联,以便它可以添加适当数量的../前缀。

相关内容