命令行 为什么 `mv file/dir` 不将文件移动到当前工作目录的子目录中?

分享于 

5分钟阅读

ubuntu

  繁體 雙語

问题:

我在 /etc 目录中输入命令


me@mylaptop:/etc$ sudo mv MyFile.conf/openvpn



我认为将文件移到 openvpn 目录中,它是 /etc 目录的子目录。 然而,这似乎并不是。 我所能确认的是命令被执行。


回答 1:

在提供了这里 NAME的目录时,你将文件重命名为位于 root 目录 / 中的openvpn。 若要恢复这里操作,请运行:


sudo mv/openvpn/etc/MyFile.conf



如果目录确实存在,则将文件移动到其中,然后还原为:


sudo mv/openvpn/MyFile.conf/etc/



要将它移动到当前目录的现有子目录中,可以运行其中的任何一个- 那些使用相对的相对路径:


mv MyFile.conf openvpn


mv MyFile.conf openvpn/


mv MyFile.conf./openvpn


mv MyFile.conf./openvpn/



. 是指向当前目录的链接,因此路径开头的./ 表示"在这里目录中"。 末尾的斜杠表示 openvpn 是一个目录,你想将文件移动到它里面。 如果不提供,则文件将被删除,如果存在这里 NAME的目录,则将它的移动到其中。否则,将文件重命名为 openvpn。 最后,如果你不想重命名目录,那么 mv 会发出警告,如果目录丢失,并且没有重新命名,那么这是安全的方式。

如果路径以 / 开始,另一方面,无论当前工作目录是什么,它都是一个只读绝对路径,它总是相对于 root 目录 / 路径。 使用文件和目标的绝对路径,你的命令将如下所示:


mv/etc/MyFile.conf/etc/openvpn


mv/etc/MyFile.conf/etc/openvpn/



进一步阅读


回答 2:

你需要使用


me@mylaptop:/etc$ sudo mv MyFile.conf openvpn/



MyFile.conf 文件移到 /etc/openvpn 子目录中。

另一方面


me@mylaptop:/etc$ sudo mv MyFile.conf/openvpn



将文件作为 openvpn 移动到 / 目录( 例如。 重命名为 openvpn ) 改为( 假定 /openvpn 目录不存在)。


回答 3:

当你移动文件时,你将告诉OS要放置它的目录或者你想要给它的新路径。

你告诉了操作系统"/openvpn"。 它可以完全做到- 检查/openvpn 是否为目录,如果是这样移动文件,或者如果/openvpn 是文件,那么就重命名并移动文件,所以现在可以访问它

你希望它在目录"openvpn"中移动到 ,在当前目录中找到,而不是在文件系统 root 目录( 这就是领先的"/"表示) 中找到。 因此,必须在移动命令中指向 ,而不是绝对路径。 这其中的任何一个都可以工作:

  • mv MyFile.conf openvpn - 在我的当前目录中查找这个"openvpn""
  • mv MyFile.conf/etc/openvpn - 查找绝对路径/etc/openvpn
  • mv MyFile.conf openvpn/ - 在我的当前目录中查找一个名为openvpn的目录
  • mv MyFile.conf./openvpn - 使"当前目录"更加明显

回答 4:

了解如何使用自动完成 TAB,以避免在来自Linux的文件和目录时更容易避免的错误。

如果在 shell TAB 中支持,在中搜索任何匹配的file(s), 文件夹和/或者任何可用的命令;在终端开始前键入前几个字符。



COM  文件  COMM  DIR  Comma  命令行