路径上的点是什么意思?

路径上的点是什么意思?

如何"/a/./b/../../c/"等于/c

我在 Stack Exchange 网站之一上看到了这个问题。显然..意味着弹出堆栈(?)。为什么会这样呢?

答案1

假设根看起来像:

/a/b
/c

让我们将其分解为组件:
/-> root
/a-> in (a)
.-> THIS dir path
/a/./-> still in /a
/a/./b-> in /a/b
..-> go“up”一级
/a/./b/..-> /a/b/..-> /a
/a/./b/../..-> /a/..-> /
/a/./b/../../c->/c

答案2

在 *nix 世界中,每个目录都是父目录的子目录。每个目录都有一个隐式的“.”引用自身的目录,以及引用其父目录的隐式“..”目录。因此,如果您位于特定目录中,并且您改变目录cd) 到 '。' (以“$”开头的命令可以在命令行上运行!),您将保留在同一目录中:

$ pwd
/tmp/a/b
$ cd .
$ pwd
/tmp/a/b

但是将目录更改为“..”会上升一位:

$ cd ..
$ pwd
/tmp/a

将目录更改为“..”再次上升:

$ cd ..
$ pwd
/tmp

此规则的唯一例外目录是根目录,它没有父目录:

$ cd ..
$ pwd
/
$ cd ..
$ pwd
/

查看本教程介绍 Unix 目录更多细节。

答案3

/ 是你的根目录。它的目录结构如下:

/ 
___ /c
___ /a
______/b (child dir of a)
___ /other dirs

现在,一个点。表示同一个目录,双点(..)表示父目录。

因此,在您的示例中,当您在路径中使用 . 时,它会停留在同一目录中,而当您使用 .. 时,它会跳回其父目录。因此,最终通过向上跳转,它会到达根目录 (/),因此它相当于 /c

相关内容