为何是 '。' 选择代表当前目录,选择“ ..”代表父目录?


Answers:


16

我怀疑您会找到与波浪号问题一样有趣的答案!

我当时不在那儿,但是..就像省略号(...),在类似这样的上下文中这是有意义的cd ../../../there。而且,尤其是从波浪号的情况看,您的老式终端键盘上没有很多符合要求的字符。您也不需要换班.。这是完美的。

点前缀用于隐藏文件的事实可能是另一个原因。隐藏文件默认情况下不通过上市等工具ls,所以也不是基本上冗余...。从某种意义上说,将它们与其他文件一起考虑是没有意义的。

事实证明,我可能把它倒退了……来自维基百科

文件名前面带有“。”的概念 应该被隐藏是Unix早期软件错误的结果。当特殊的'。和“ ..”目录条目已添加到文件系统中,因此决定ls命令不应显示它们。但是,ls程序被错误地编写,以排除名称以“。”开头的任何文件,而不是仅排除名为“。”的文件。要么 '..'。

事实证明,这在编程时很有用。由于系统确实包含。和..响应readdir()类型命令(和Shell Glob),可以通过相同的方式来忽略它们和隐藏文件。

一个不同的看法有关使用价值是在维基百科报价参考。当然,整个故事可能都是伪造的 ……很难相信,例如丹尼斯·里奇(Dennis Ritchie)认为只检查第一个字符就可以了。

我不同意作者的观点,最好将隐藏的配置文件放在自己的目录中,而不是给它们一个通用前缀。前缀更加灵活,允许使用树内指令(例如.gitignore和).htaccess。目睹这种文件在按字典顺序排序时也一起出现- 也许这毕竟是故意的


2

stackoverflow上@Panos的答案大致相同:

简而言之,它是由用户手工创建的dddd无情和d无情的d)发展而来的。d成了,而那些...被创建的第一个mkdir实用程序(链接目录不再仅仅通过用户允许之后的setuid),后来被mkdir 系统调用。

肯·汤普森采访节录(1989-09-06):

MSM:但是对于用户而言,它看起来与目录层次结构大致相同。

汤普森:不,第一个是DG。实际上,它甚至不是非循环的。如果您了解UNIX文件系统,它就是...。这里有I-list,它是系统上所有文件的定义。然后这些文件中的一些是仅包含名称和I编号的目录。那里没有任何东西可以将其约束到树上。因此,它实际上根本不是分层的。

MSM:我明白了。

汤普森:我们并没有把它限制在树上。我们正在尝试各种拓扑。我们最终要做的是变成具体的并强制使用实际上是该系统惯用的拓扑的拓扑。The ...每次创建目录时,按照惯例,我们将其放置在另一个名为directory-directory的目录中,该目录为dd。它的名字叫dd,所有用户目录,实际上大多数其他目录,用户都维护自己的目录系统,指针指向dd,而dd缩短为点-点,而dd用于directory-directory。在这里可以回到系统中的所有其他目录来维护此意大利面碗。因此,我的意思是各种形式的凝灰岩,这在DG实施中仅是随机的目录和文件集的严格约定,被强制转换为我们维护的类型。当我们开始编写诸如检查文件系统和程序的文件系统,锁定意大利面条碗目录以及查找脱节的东西之类的东西时,我的意思是您会放弃某些东西而永不收回,因为您知道自己会丢失它。这些问题几乎是无法克服的,因此在下一个实施中,我们迫使类型学强于此。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.