Linux 为什么';mv';将文件向上移动到多个级别时命令不起作用
操作系统:SLES12虚拟机 所以我从一个目录开始: DirA: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
/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是一个符号链接。这就是问题所在!谢谢