Unix和Linux真实文件中的'dot'和'dot dot'文件是什么?

时间:2013-09-18 07:11:43

标签: linux unix filesystems

特殊文件...是否实际存在并作为普通文件存储/位于文件系统中,还是仅在文件系统处理程序访问时才解释/创建?

  • .(当前目录)
  • ..(父目录)

我的假设是它们不存在 - 否则,当你创建符号链接或绑定坐骑时,事情就会破裂。

2 个答案:

答案 0 :(得分:3)

你的假设是正确的。这些文件仅作为抽象层导航并描述资源位置。

答案 1 :(得分:0)

我认为当前接受的答案不正确,或者至少不清楚其真正含义。

”。和“ ..”绝对是“真实的”。在该目录中,任何目录都具有“。”的真实条目。 (指向目录自己的inode)和“ ..”的真实条目(指向目录的父目录的inode)。这些是目录中的实际条目,因此从某种意义上说它们是“真实的”。如果这是原始问题的意图,则不会单独分配具有重复数据的inode。

原始张贴者说:“我的假设是它们不存在-否则,当您创建符号链接或绑定安装时,事情会破裂”-我不确定这里指的是什么,除非我可以猜测关于符号链接中断的含义-我想这是指指向目录的符号链接的情况,然后当您通过符号链接“ cd”操作时,“ ..”在哪里结束?换句话说,如果您在“ / a / b / c”处有一个符号链接,该符号链接链接到名为“ / x / y / z”的目录,而您执行的是“ cd / a / b / c”,那么在哪里结束然后您是否执行了“ cd ..”?答案是,最终的结果是“ / x / y”-唯一令人困惑的原因是,当您通过符号链接完成“ cd”操作时,现代外壳会“知道”,并且它们会假定您想要“”。 。”指代符号链接所在的父级,而不是它指向的位置。恕我直言,这是完全坏掉的行为,没有人应该实现过。。。但是,要了解我的意思,在“ bash”之类的shell中,如果要创建一个如上所述的场景,然后将cd改为“ / a / b”,运行“ pwd”,您将看到您期望的当前目录。如果您随后使用“ cd c”并运行“ pwd”,则当前目录将显示为“ / a / b / c”-但是如果您运行“ / bin / pwd”(外部“ pwd”程序而不是内置的shell),它告诉您真相并说“ / x / y / z”。同样,如果您随后执行“ cd ..”,即使您所在的真实“ ..”条目以“ / x / y”结尾,您也将以“ / a / b”结尾,从而使更改目录的语义更多的是人们“期望”的内容-因为外壳通过符号链接“知道”您所处的位置,并且假定您希望“ ..”返回到您开始的位置,而不是真正的父目录如果您当前的目录...就像恕我直言,恕我直言,这完全是错误的行为,当人们在思考“什么”时,确实会使人们感到困惑。和“ ..”实际上是指。