Linux 中的绝对路径与相对路径:有什么区别?

路径是 Linux 中最重要的概念之一,这是每个 Linux 用户都必须知道的。

路径是您引用文件和目录的方式。 它给出了文件或目录在 Linux 目录结构中的位置。 它由名称和斜杠语法组成。

/home/abhishek/scripts

作为用户,当您想要访问某个文件或目录或必须将文件或目录的位置提供给命令或脚本时,您必须使用路径。

cat /home/abhishek/scripts/my_script.sh

请记住,如果路径以斜杠“/”开头,则第一个斜杠表示根。 路径中的其余斜杠只是分隔符。 初学者经常混淆根斜线和分隔斜线。

在上图中,您有第一个以根斜杠开头的路径。 还有另一条不以 / 开头的路径(即根目录)。

两者都是正确的。 第一个是绝对路径,第二个是相对路径。 让我们详细看看它们。

Linux 中的绝对路径和相对路径

绝对路径始终从根目录 (/) 开始。 为了 example, /home/abhishek/scripts/my_scripts.sh。

相对路径从当前目录开始。 为了 example如果您在 /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

两个命令将产生相同的结果(文件路径除外)。

Linux中的绝对路径和相对路径

在 Linux 中,文件名区分大小写,可以包含大写、小写、数字、句点、破折号、下划线和除斜杠 (/) 之外的大多数符号。 斜杠 (/) 保留用于根目录和用于分隔路径中的目录。

将相对路径与 . 和 .. 目录

让我再举一个例子来解释绝对路径和相对路径之间的区别。 但在此之前,您应该了解两个特殊的相对路径:

  • . (单点)表示路径中的当前目录。
  • ..(两个点)表示父目录,即上一级。

事情马上就会清楚了。 看一下场景。 在这个中,你要进入目录 prakash 从目录 abhishek.

绝对路径与相对路径 example 在 Linux 中

您可以使用 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 中的路径和导航有了更好的理解。 如果您有任何问题或建议,请发表评论。