Linux 中的绝对路径与相对路径:有什么区别?
路径是Linux中最基本的概念之一,这是每个Linux用户必须知道的。
路径是引用文件和目录的方式。它给出了文件或目录在 Linux 目录结构中的位置。它由名称和斜杠语法组成。
/home/abhishek/scripts
作为用户,当您想要访问某个文件或目录,或者当您必须将文件或目录的位置提供给命令或脚本时,您必须使用路径。
cat /home/abhishek/scripts/my_script.sh
请记住,如果路径以斜杠“/”开头,则第一个斜杠表示根目录。路径中其余的斜杠只是分隔符。初学者经常会混淆根目录斜杠和分隔符斜杠。
在上图中,第一条路径以 root 斜杠开头。还有另一条路径不以 / 开头(即 root)。
都是正确的,第一个是绝对路径,第二个是相对路径,我们来详细看看。
Linux 中的绝对路径和相对路径
绝对路径始终从根目录 (/) 开始。例如,/home/abhishek/scripts/my_scripts.sh。
相对路径从当前目录开始。例如,如果您在 /home 目录中并且想要访问该my_scripts.sh
文件,则可以使用abhishek/scripts/my_scripts.sh。
了解绝对路径和相对路径之间的区别
你知道Linux 中的目录结构类似于树的根。一切都从根开始,然后从那里分支出来。
现在想象一下您在目录中abhishek
并且想要访问该my_scripts.sh
文件。
绝对路径以绿色虚线表示,相对路径以黄色虚线表示。
my_script.sh
假设您想使用ls 命令查看文件的属性。
您可以使用以根目录(/)开头的绝对路径:
ls -l /home/abhishek/scripts/my_script.sh
或者,您可以使用相对路径(从当前目录开始,而不是 /):
ls -l scripts/my_script.sh
两个命令都会产生相同的结果(文件路径除外)。
使用带有 . 和 .. 目录的相对路径
让我再举几个例子来解释绝对路径和相对路径的区别。但在此之前,你应该了解两种特殊的相对路径:
- . (一个点)表示路径中的当前目录。
- ..(两个点)表示父目录,即上一级。
一会儿事情就清楚了。看一下这个场景。在这个场景中,你想prakash
从目录转到目录abhishek
。
您可以使用 cd 命令切换目录。这里的绝对路径非常明显:
cd /home/prakash
要使用相对路径,您必须使用特殊的相对路径:
cd ../prakash
为什么要使用 ..?因为相对路径需要从当前目录开始,并且您必须告诉 cd 命令先上一级再下一级。这..
会将您带到/home
目录,然后您再从那里进入prakash
目录。
我希望现在事情已经更加清楚了。
您应该使用哪一个?相对路径还是绝对路径?
说实话,这个问题没有直接的答案。这真的取决于具体情况。
如果您在目录层次结构的深处并且必须向上或向下移动一级,则使用相对路径会更容易。
假设您位于 /home/username/programming/project/interface/src/header 目录中,并且必须访问 /home/username/programming/project/interface/bin 目录中的某些内容。使用相对路径可以省去您输入所有那些冗长的目录名称的麻烦,您只需在此处使用 ../../bin 即可。
但是如果你必须从 /home/username/programming/project/interface/src/header 目录访问 /usr/bin 目录中的某些内容,使用 ../../../../../../usr/bin 之类的路径就不明智了。在这种情况下,使用绝对路径是明智的做法。
另一种情况是在脚本或程序中使用路径。当您确定位置时,请使用绝对路径。如果您的项目有多个文件夹,并且需要在目录之间切换,您可以在此处使用相对路径,因为您不知道最终用户将把所有项目文件复制到哪里,是在主目录还是在某个开发目录中。
换句话说,您应该了解这两种方法,并根据您的场景使用更简单的方法。
希望你现在对 Linux 中的路径和导航有了更好的理解。如果你有任何问题或建议,请发表评论。