为什么/目录下有..,代表什么意思?

为什么/目录下有..,代表什么意思?

/目录中并使用ls -a 结果将包含...

我可以理解 的存在,.它是目录本身的指针。目录..中有/而 却没有父目录,这是什么意思/

答案1

许多软件都是基于这样的假设,不是事实上 POSIX.1 已经向他们保证了这一点,但传统上 UNIX 系统的情况也是如此,并在许多 UNIX 文献中有所体现,即(引用其中一篇 UNIX 文献):

每个目录都包含文件名点和点点(...),其 inode 编号分别是目录和其父目录的 inode 编号。[…]该程序初始化文件系统,mkfs以便根目录具有文件系统的根 inode 编号。...

— 莫里斯·J·巴赫(1986 年)。UNIX 操作系统的设计。 普伦蒂斯霍尔 (Prentice Hall),第 73 页

例如:旧的getcwd()库函数(在没有提供特殊内核支持的系统上)依赖于此来知道何时停止在编写当前目录名称时跟踪条目链..。当到达其自身父目录或无法遍历到时,它会停止..

因此,根目录具有(或至少对于应用程序模式程序而言)出现通过系统 API 可以看到)的..条目是很多东西都基于以下假设每一个目录有..,并且..根目录中的循环可用于检测是否位于根目录中。

POSIX.1 实际上并不保证根目录有..,只是指定程序必须考虑循环的可能性,如果根目录中有一个..。这是为了让非 UNIX 系统也能符合 POSIX 标准。有些文件系统缺席表示..目录是根目录。正如 Bach 自己所讨论的,有些系统中有一个目录多于根,POSIX.1 在讨论以以下项开头的绝对路径名时允许使用斜线(类似于 Microsoft 局域网系统中使用的通用命名约定)。

然而,Linux(以及 Ubuntu Linux)提供了 UNIX 范式的更严格保证。

答案2

很简单:通过文件目录,./意味着此文件夹,而../意味着文件在哪里(例如,当我在目录中时user/home/me/Desktop../将带我到/user/home/me)。

相关内容