我在使用 move 命令时遇到了麻烦。我创建了两个目录,分别称为Cat
和Dog
。在 下Cat
我创建了一个名为 的文件puppies
。
当我尝试puppies
从移动Cat
到 时,Dog
我得到No such file or directory
。但是,当我返回 和cd Cat
和时ls -a
,它显示puppies
。然后,我返回到我的主目录,ls -a
、 和Cat
和Dog
被列出。
那么我做错了什么?
答案1
处理文件时需要了解的一些有用的事项:
- Linux 是区分大小写(因此
dog
,Dog
和DOG
都是不同的文件) - 命令如何工作取决于你在哪里在文件系统中
- 根据您所在的位置,您可以使用相对的或者绝对路径名
因此,如果您在父目录中Cat
,则Dog
可以使用相对路径名,如下所示:
mv Cat/puppies Dog
一个容易犯的错误是输入以/
mv /Cat/puppies /Dog
这将给出一个no such file or directory
错误,因为/
是根目录,并且 下没有Cat
和Dog
目录/
。看一下:
ls /
造成这种混淆的原因之一是系统使用了一个方便的快捷方式来表示用户的主目录,因此,您可以在用户主目录中/home/username/somefile
键入~/somefile
而不是 的绝对路径名,因此,假设和位于用户主目录的顶部,您可以使用来从文件系统中的任何位置移动到somefile
Cat
Dog
puppies
Cat
Dog
mv ~/Cat/puppies ~/Dog
使用相对路径名的几个示例
如果你在目录中Cat
,你可以puppies
像这样移动
mv puppies ../Dog
..
指定当前工作目录的父目录
如果你在目录中,Dog
你可以像这样移动小狗
mv ../Cat/puppies .
.
指定当前工作目录
要了解您所在的位置,通常可以查看提示,但为了确保万无一失,您可以随时检查代表pwd
“打印工作目录”的命令
答案2
我在这里使用的命令是(假设它们位于您的主目录的顶层):
mv ~/Cat/puppies ~/Dog/puppies
如果目录puppies
包含更多目录,则需要添加递归标志-r
,这将使命令看起来像:
mv -r ~/Cat/puppies ~/Dog/puppies
请注意,该命令区分大小写。