假设我有一个这样的文件系统:
/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)"
看这个答案。