文件在 mv 命令中消失了:

文件在 mv 命令中消失了:

我试图移动file.py到现有目录模块......

wm@my-laptop:~/Desktop/1linuxandpython$ mv Modules_and_packages.py /Modules_and_packages_Game

它说权限被拒绝,所以我这样做:

wm@my-laptop:~/Desktop/1linuxandpython$ sudo mv Modules_and_packages.py /Modules_and_packages_Game

然后它就消失了,我搜索了答案,发现文件/Modules_and_packages_Game现在的名字是,但在任何地方都找不到它。怎么可能以.py文件夹名称命名呢?

编辑:

在此处输入图片描述

ls -l显示文件夹名称,当我执行它时,它会打开,file.py在执行命令之前知道:

$ sudo mv Modules_and_packages.py /Modules_and_packages_Game

我确定文件夹 Modules_and_packages_Game 在那里吗?

答案1

mv你的命令的目标是/Modules_and_packages_Game。这是一条绝对路径。

  • 如果路径存在并且是一个目录,mv则将源文件移动到该目录。
  • 如果路径不存在,源文件将被重命名为目标名称。

比较一下man mv,看看执行的三种可能形式mv

SYNOPSIS
  mv [OPTION]... [-T] SOURCE DEST
  mv [OPTION]... SOURCE... DIRECTORY
  mv [OPTION]... -t DIRECTORY SOURCE...
DESCRIPTION
  Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

最有可能的是,您使用了第一种形式(将 SOURCE 重命名为 DEST),而您想要的是第二种形式(将 SOURCE 移动到 DIRECTORY)。您的文件现在是(文件系统根目录)
中名为 的文件。/Modules_and_packages_Game

使用 检查ls -l /Modules_and_packages_Game

要后退,请运行:

sudo mv /Modules_and_packages_Game Modules_and_packages.py

现在正确执行。我假设您的目标目录是相对路径Modules_and_packages_Game,而不是绝对路径/Modules_and_packages_Game

要么(使用第二种形式):

mv Modules_and_packages.py Modules_and_packages_Game

或(使用第三种形式):

mv -t Modules_and_packages_Game Modules_and_packages.py

后者更安全,因为如果目标目录不存在,它就会给出错误。

答案2

正如其他人指出的那样,你让人困惑相对的路径与……绝对路径。请牢记以下注意事项:

  1. 一条斜线/根目录。可以将其视为位于所有其他文件夹之上的文件夹,也就是说,系统中的每个文件夹和文件都位于/目录内的某个位置。
  2. 一个绝对路径是从根目录到文件或文件夹的路径。因此,它始终以/(即根目录)开头,以您要访问的文件或文件夹结尾。文件的绝对路径示例如下:
/home/username/Desktop/myFile.txt
  1. 波浪号~是一个快捷方式,表示你的主目录。因此,可以使用此快捷方式访问主文件夹内的某个文件,上面的例子可以是:
~/Desktop/myFile.txt
  1. 当前目录或者工作目录是您当前正在处理的文件夹。它通常以蓝色显示在 Bash 提示符上,位于分号:和美元符号之间$。例如,如果您当前正在处理Desktop文件夹,则终端上的 Bash 提示符将如下所示:
用户名@主机名:~/桌面$
  1. A相对路径当您要访问的文件或文件夹位于当前工作目录中时,可以使用 。在这种情况下,路径不能以 开头/,因为这表示路径是从根目录开始的绝对路径。例如,如果您已经在处理文件夹,只需输入文件名称Desktop即可读取文件的内容。myFile.txt
username@hostname:~/Desktop$ cat myFile.txt
  1. 当前目录可以用一个点 表示.。因此,为了防止错误并确保引用的是相对路径,你可以用 来开始相对路径,以./表示当前目录中的某些内容,例如:
username@hostname:~/Desktop$ cat ./myFile.txt
  1. 工作目录上方的目录由两个点表示..。因此,如果您位于下载文件夹中,但想要访问桌面上的文件,则可以使用以下相对路径:
username@hostname:~/Downloads$ cat ../Desktop/myFile.txt

再举一个例子,如果位于您的桌面上的目录myFile.txtsomeFolder,那么您可以使用以下任一方式读取其内容:

  • 相对路径(开头没有斜杠):
username@hostname:~/Desktop$ cat someFolder/myFile.txt
  • 带点的相对路径,以避免混淆:
username@hostname:~/Desktop$ cat ./someFolder/myFile.txt
  • 绝对路径(以斜杠开头):
username@hostname:~/Desktop$ cat /home/username/Desktop/someFolder/myFile.txt
  • 带有主目录快捷方式的绝对路径:
username@hostname:~/Desktop$ cat ~/Desktop/someFolder/myFile.txt

请对此进行一些练习,然后回来,您就会明白其他答案。

简而言之,你的文件现在位于你的根目录中,其名称与你尝试将其放入的文件夹的名称相同。因此,该文件的绝对路径现在是/Modules_and_packages_Game .py(它仍然是一个 python 文件,只是因为你不小心更改了它的名字而缺少扩展名)。这与 中的文件夹不同~/Desktop/1 linux and python steps/Modules_and_packages_Game。要将 python 文件放入该文件夹并将其名称改回,请使用:

mv /Modules_and_packages_Game "~/Desktop/1 linux and python steps/Modules_and_packages_Game/Modules_and_packages.py"

(请注意,需要双引号,"因为路径中有空格。)

相关内容