读完这个问题后为什么选择“~”来代表主目录?,我脑海中的下一个明显问题是为什么“。” '..' 用于表示当前目录和父目录。
现在看来似乎很直观,但有什么特别的原因吗?
答案1
我怀疑您是否会找到与波浪号问题一样有趣的答案!
我不在那儿,但是 .. 就像省略号 (...),这在cd ../../../there
.另外,特别是从波浪号大小写的旧终端键盘来看,没有太多符合此目的的字符。您也不需要换班.
。这是完美的。
点前缀用于隐藏文件可能是另一个原因。默认情况下,诸如 之类的工具不会列出隐藏文件,因此本质上和ls
也不是多余的。冗余是指没有必要将它们与其他文件一起考虑——否则它们肯定是有用的。.
..
事实证明我可能向后...从维基百科:
文件名前面带有“.”的概念应该隐藏的是 Unix 早期的一个软件错误的结果。当特殊的“.”时并且“..”目录条目已添加到文件系统中,因此决定 ls 命令不应显示它们。但是,ls 程序被错误地编写为排除名称以“.”开头的任何文件,而不是仅排除名为“.”的文件。或者 '..'。
这在编程时确实很有用;因为系统确实包含 .和..响应readdir()
类型命令(和shell glob),忽略它们并隐藏文件可以以相同的方式完成。
A不同意见有关该使用价值的信息请参见维基百科引用的参考文献。当然,整个故事可能是杜撰的...有点难以相信,例如,丹尼斯·里奇(Dennis Ritchie)认为仅检查第一个字符就可以了。
我不同意作者vis的观点,最好将隐藏的配置文件放在自己的目录中,而不是给它们一个通用前缀。前缀更加灵活,允许使用像.gitignore
和 之类的树内指令.htaccess
。见证这种类型的文件在按字典顺序排序时也会出现在一起——所以也许这毕竟是故意的。
答案2
大部分答案与stackoverflow 上的@Panos:
简而言之,它是由用户手工创建的d
and dd
(d
目录和d
目录的目录)演变而来的。成为d
d
点、 和.
是..
首先由mkdir
实用程序创建的(仅用户不再允许链接目录后的 setuid),然后由mkdir
系统调用创建。
摘录自肯·汤普森访谈(1989-09-06):
男同性恋者:但对于用户来说,它看起来与目录层次结构大致相同。
汤普森:不,第一个是 DG。事实上,它甚至不是无环的。如果您了解 UNIX 文件系统,就会发现……有 I-list,它是系统上所有文件的定义。其中一些文件是只包含名称和 I 号的目录。那里没有任何东西将它限制在树上。所以它实际上不是,根本没有等级制度。
男同性恋者: 我懂了。
汤普森:我们并没有把它限制在一棵树上。我们正在尝试各种拓扑。我们最终所做的就是变成具体的并强制采用实际上是该系统惯例的拓扑。每次我们创建一个目录时,按照惯例,我们都会将其放在另一个名为的目录中目录-目录,这是 dd。它的名称是 dd,所有用户目录以及实际上大多数其他目录,用户维护自己的目录系统,有指向 dd 的指针,并且 dd 被缩短为点对点,dd 表示目录-目录。这是您可以访问系统中所有其他目录来维护这个意大利面条碗的地方。所以,我指的是各种形式的凝灰岩,这在 DG 实现中是严格约定的,随机的目录和文件集被迫进入我们维护的类型中。当我们开始编写诸如文件系统检查程序之类的东西、锁定意大利面条碗目录以及查找脱节的东西时,我的意思是你会分解一些东西并且永远不会将其恢复,因为你知道你已经丢失了它。这些问题变得几乎无法克服,因此在下一次实施中,我们强制采用了比这更强大的类型。