从符号链接复制时 GNU cp 的默认行为是什么?

从符号链接复制时 GNU cp 的默认行为是什么?

有人可以详细说明一下吗官方文档中有这个描述

从符号链接复制时,cp 通常仅在不递归复制或使用 --link (-l) 时才遵循链接。

答案1

假设你有一个符号链接foo/bar -> baz

% mkdir foo
% ln -s baz foo/bar
% tree foo
foo
└── bar -> baz

1 directory, 1 file

如果直接复制foo/bazcp将按照符号链接复制目标:

% 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

相关内容