如何跨符号链接/外部复制文件? (目的地)

如何跨符号链接/外部复制文件? (目的地)

假设我有一个这样的文件系统:

/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

我没有看到 file1。寻找它,我发现它在/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 .

就我个人而言,我更喜欢 cp 中的 -t(目标)选项。

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

答案2

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

这个答案

相关内容