问题描述
我想了解完整路径名的真正含义。我的主目录中有一个名为 my_script.txt 的文件。我假设完整路径名是 ./my_script,这意味着它位于根文件夹中,但我不确定。有人可以告诉我吗?
最佳思路
不,你的假设是错误的。主目录中 my_script
文件的完整路径名是: /home/your_user_name/my_script
。当您在终端中输入 ./my_script
时,您实际上尝试执行脚本(如果可执行),并且仅当您当前的工作目录是 /home/your_user_name/
时才会执行该脚本。要执行脚本,您还可以使用完整文件路径,正如我所说的 /home/your_user_name/my_script
。
人们相信 UNIX 路径名看起来和感觉起来都像 Internet 地址,因此具有兼容性。可以使用以下命令在终端中找到当前工作目录的完整路径名:
pwd
要查找用户主目录的完整路径,您可以使用:
echo ~
echo $HOME
echo /home/$USER
上面三个命令是等价的。
要查找文件的完整路径名,可以使用 readlink
命令。例如,在你的情况下:
cd ~
readlink -f my_script
次佳思路
完整路径名实际上意味着从文件系统的 /
目录到该文件或文件夹的完整路径。
例如,脚本的完整路径是:
/home/your_username/my_script
或者,grep
可执行文件的完整路径名是
/bin/grep
至于 ./my_script
,符号 .
代表当前目录,所以你实际上是说“在当前目录下查找名为 my_script 的文件或文件夹”
第三种思路
要了解完整的路径,首先必须知道起点。
根目录/
它是基于*nix 的操作系统的起点。它包含系统和用户的所有其他目录。
用户主目录/home/USERNAME/
或简称~/
,包含用户的文件和目录。例如图片、音乐、文档等。每个目录都被引用为 /home/USERNAME/DIRECTORY
,例如文档位于 /home/USERNAME/Documents
。
与目录一样,文件的引用方式也相同,例如位于用户 sosytee
的主目录中名为 my_script
的文件可以使用完整路径 /home/sosytee/my_script
或简称为 ~/my_script
来引用。
文件和目录都可以使用系统中任何位置的完整路径来引用/访问。此外,如果它们位于同一目录中,则可以仅使用它们的名称来访问它们。例如,如果用户使用终端时位于 ~/
,则只需使用 my_script
即可访问 my_script
文件。
此外,如果将目录和文件放置在 PATH 变量中,则可以仅使用其名称来访问它们。您可以使用 echo $PATH
查看 PATH 中存储的内容。
有关如何使用命令行访问文件的简单示例:
-
用户当前位于
/home/USERNAME/
,并希望对位于/home/USERNAME/Documents
的名为 foo.txt 的文件使用cat
命令:
cat Documents/foo.txt
-
用户位于
~/Documents
内部,想要运行位于~/Scripts/Foo
处名为foo.sh
的脚本:\nsh ../Scripts/Foo/foo.sh
\nor\nsh ~/Scripts/Foo/foo.sh
无论如何,这只是一个摘要。
更多信息
-
Bash Guide for Beginners,作者:Machtelt Garrels
-
关于路径 here 的更多信息