Linux 为什么';mv';将文件向上移动到多个级别时命令不起作用

Linux 为什么';mv';将文件向上移动到多个级别时命令不起作用,linux,terminal,mv,sles,Linux,Terminal,Mv,Sles,操作系统:SLES12虚拟机 所以我从一个目录开始: DirA:/home/user/testA/testB 我的目标是将文件从此目录移动到 DirB_rel:/home/user/testA/testB/。/../deliveries/rpm/SOURCE 注:testA是一个符号链接,不包含在DirB_abs 当我cd到它的时候,它给出了一个 DirB_abs:/home/user/deliveries/rpm/SOURCE 问题是,当我尝试使用mv(已尝试tar.gz和.txt)将文件从D

操作系统:SLES12虚拟机

所以我从一个目录开始: DirA
/home/user/testA/testB

我的目标是将文件从此目录移动到 DirB_rel
/home/user/testA/testB/。/../deliveries/rpm/SOURCE

注:
testA
是一个符号链接,不包含在DirB_abs

当我cd到它的时候,它给出了一个 DirB_abs
/home/user/deliveries/rpm/SOURCE

问题是,当我尝试使用
mv
(已尝试tar.gz和.txt)将文件从DirA移动到DirB_rel时,该文件会按预期从原始位置删除,但不会出现在新位置,因此会丢失

例如,
mv testFile.txt DirB_rel
->文件消失

但是,当我使用目录B的绝对路径时,
mv
工作正常

例如,
mv testFile.txt DirB_abs
->成功

知道这是怎么回事吗


谢谢

mv命令将引用您当前所在的目录,而不是文件所在的目录。因此,如果我们在home~/中,并且希望将~/A/file移动到~/B/file,则使用mv,如下所示:

mv A/file B/
请注意,如果您使用

mv A/file ../B/

该命令将在/home/B中查找B,而不是~/B,因为我们在~/目录中发出该命令。

问题在于符号链接。当您执行
user/testA/testB/../../
并且testA是asymlink时,您不会返回到user,而是返回到目录testA的父目录链接到

protip:如果您将文件移动到某个目录,请始终使用尾部斜杠:
mv myfile mydir/
,这样,如果mydir不存在,你会收到一条错误消息,而不是将mydir创建为一个文件(如果mydir确实存在,则相同,但作为一个文件,在这种情况下,结果将更加糟糕)。你在路径的某个位置有一些符号链接吗?@Nir Levy:是的,testA(包含在DirB_rel中,我无法将文件移动到其中)是一个符号链接。这是一个问题吗?希望这能回答你的问题,如果不是的话,那么如果你能重新措辞你的问题,因为它有点混乱。谢谢,我知道这一点。我正在使用的makefile试图
mv
a文件从当前目录到DirB_abs,但使用DirB_rel来实现这一点。在我看来,它们应该是一样的,尽管testA是一个符号链接。这就是问题所在!谢谢