Linux中的双点(..)和单点(.)是啥?

Posted

技术标签:

【中文标题】Linux中的双点(..)和单点(.)是啥?【英文标题】:What is double dot(..) and single dot(.) in Linux?Linux中的双点(..)和单点(.)是什么? 【发布时间】:2014-06-08 03:37:08 【问题描述】:

ls -ai 命令显示... 的inode 分别与当前目录和父目录相同。

... 到底是什么?

它们是真实文件还是硬链接?但据我所知,不允许创建指向目录的硬链接。

【问题讨论】:

三点在哪里!?不小心被mv...一起使用了,相关目录就不见了! 找到了。它在同一个目录中,名为...,因此被隐藏,因为它以点开头:) 这就是为什么很多命令你可以通过. 例如git add .,将暂存当前目录(及其子目录)中的所有内容,而 git add .. 将暂存父目录(及其子目录)中的所有内容 对于在此处重定向的 Windows 问题,请注意“.”和“..”条目(仅存在于非根目录中)在 Windows 中是虚拟的。内核对象管理器、I/O 管理器和文件系统驱动程序不实现它们(除了在相对符号链接的目标路径中)。在规范化路径中,“.”和“..”组件由用户模式运行时库使用基于规则的路径操作解析。如果它们在逐字“\\?\”路径中直接传递给内核模式,文件系统会按字面意思处理它们,无论是作为保留名称 (NTFS) 还是作为功能失调的名称 (FAT32)。 【参考方案1】:

. 表示您正在使用的当前目录,并且 ..代表父目录。

例子:

假设您在目录/etc/mysql 中,并且您想移动到父目录,即/etc/。然后使用cd..:

/etc/mysql> cd ..

如果你想设置当前目录bash文件中的一个文件的路径,使用.,文件名如下:./filename

【讨论】:

你说的“在当前目录bash文件中”是什么意思?你能详细说明一下吗? @PeterMortensen 这意味着,如果你想设置当前目录中的文件的路径。 @Deva 当您说“设置路径”时,会执行文件还是将包含文件的目录的绝对路径添加到 PATH 环境变量中? @DaCruzR,在 bash 文件中说设置路径,如果我们需要访问另一个文件,那么我们正在设置路径。甚至 ./filename 也用于执行文件。【参考方案2】:

它们不是硬链接。您可以将其更多地视为此目录 (.) 和此目录的父目录 (..) 的简写。

尝试删除或重命名...。然后你就明白为什么它不是硬链接了。

【讨论】:

在大多数 UNIX 文件系统中,它们硬链接,但是,由于它们内置在文件系统中,因此您无法删除它们。【参考方案3】:

它们是特殊的 name-inode 映射,虽然它们不是真正的硬链接,但它们确实算作硬链接(它们确实增加了链接数),因为正如你所说,目录不能有硬链接.在这里阅读更多:Hard links and Unix file system nodes (inodes)

【讨论】:

【参考方案4】:

.代表你所在的目录,..代表父目录。

来自dot definition:

这是一个短字符串(即字符序列),添加到 文件的基本名称(即名称的主要部分)的结尾 或目录以指示文件或目录的类型。

在类 Unix 操作系统上,每个目录至少包含 一个对象用一个点表示,另一个用两个点表示 连续的点。 前者是指目录本身和 后者指的是其父目录(即, 包含它)。这些项目是自动创建在每个 目录,可以通过使用带有 -a 选项的 ls 命令看到 (指示它显示其所有内容,包括隐藏的 项目)。

【讨论】:

它们是作为目录硬链接的真实文件吗? @Cubarco:- 这些不是硬链接! 我不知道为什么这个答案有这么多的赞成票。这些问题专门询问“究竟. 和.. 是什么?”不是“他们代表什么”或“他们做了什么”

以上是关于Linux中的双点(..)和单点(.)是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Git diff 提交范围中的双点“..”和三点“...”有啥区别? [复制]

Ruby Restclient 不同的双点或 astrophobe 并且顺序很重要

Pig中的双冒号到底是啥意思?

STL 中的双端队列到底是啥?

R中的双冒号(::)是啥?

Oracle中的双表是啥?