有人可以详细说明一下吗官方文档中有这个描述?
从符号链接复制时,cp 通常仅在不递归复制或使用 --link (-l) 时才遵循链接。
答案1
假设你有一个符号链接foo/bar -> baz
:
% mkdir foo
% ln -s baz foo/bar
% tree foo
foo
└── bar -> baz
1 directory, 1 file
如果直接复制foo/baz
,cp
将按照符号链接复制目标:
% cp foo/bar .
cp: cannot stat 'foo/bar': No such file or directory
这里,cp
不是foo/bar
通过递归复制到达的,所以目标文件会被复制。
相反,如果您复制foo
并告诉cp
递归,它将复制符号链接本身,而不是目标:
% cp -r foo foo2
% tree foo2
foo2
└── bar -> baz
1 directory, 1 file
如果您尝试递归复制但也设置了该-l
选项,cp
将再次尝试遵循符号链接:
% cp -rl foo bar3
cp: cannot stat 'foo/bar': No such file or directory