我试图移动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
正如其他人指出的那样,你让人困惑相对的路径与……绝对路径。请牢记以下注意事项:
- 一条斜线
/
是根目录。可以将其视为位于所有其他文件夹之上的文件夹,也就是说,系统中的每个文件夹和文件都位于/
目录内的某个位置。 - 一个绝对路径是从根目录到文件或文件夹的路径。因此,它始终以
/
(即根目录)开头,以您要访问的文件或文件夹结尾。文件的绝对路径示例如下:
/home/username/Desktop/myFile.txt
- 波浪号
~
是一个快捷方式,表示你的主目录。因此,可以使用此快捷方式访问主文件夹内的某个文件,上面的例子可以是:
~/Desktop/myFile.txt
- 这当前目录或者工作目录是您当前正在处理的文件夹。它通常以蓝色显示在 Bash 提示符上,位于分号
:
和美元符号之间$
。例如,如果您当前正在处理Desktop
文件夹,则终端上的 Bash 提示符将如下所示:
用户名@主机名:~/桌面$
- A相对路径当您要访问的文件或文件夹位于当前工作目录中时,可以使用 。在这种情况下,路径不能以 开头
/
,因为这表示路径是从根目录开始的绝对路径。例如,如果您已经在处理文件夹,只需输入文件名称Desktop
即可读取文件的内容。myFile.txt
username@hostname:~/Desktop$ cat myFile.txt
- 这当前目录可以用一个点 表示
.
。因此,为了防止错误并确保引用的是相对路径,你可以用 来开始相对路径,以./
表示当前目录中的某些内容,例如:
username@hostname:~/Desktop$ cat ./myFile.txt
- 这工作目录上方的目录由两个点表示
..
。因此,如果您位于下载文件夹中,但想要访问桌面上的文件,则可以使用以下相对路径:
username@hostname:~/Downloads$ cat ../Desktop/myFile.txt
再举一个例子,如果位于您的桌面上的目录myFile.txt
中someFolder
,那么您可以使用以下任一方式读取其内容:
- 相对路径(开头没有斜杠):
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"
(请注意,需要双引号,"
因为路径中有空格。)