当前 (.) 和父 (..) 目录的技术术语是什么?

Max*_*uxa 20 path

我有一个函数来检查传入的文件名是.还是... 但我不知道如何正确命名它。像这样的东西IsCurrentOrParentDirectory()是不明确的,因为该函数采用文件名而不是完整路径。(直觉上,一个程序员同事会期望/usr/在我进去时通过/usr/会返回true,而实际上并非如此。)

这些目录条目有技术术语吗?如果有,那是什么?

slh*_*hck 23

POSIX 标准

特殊文件名点应指代其前任指定的目录。特殊文件名 dot-dot 应指代其前任目录的父目录。作为一种特殊情况,在根目录中,dot-dot 可能指的是根目录本身。

因此,实际上,如果您想检查文件名是否为.或者..您必须调用它IsDotOrDotDot(),或者,使用路径名解析的 POSIX 术语IsPredecessorOrParentOfPredecessor(),或者甚至PointsToPredecessorOrParentOfPrecedessor()……您明白了。问题是后一个术语仅在查看完整路径名时才有意义。但无论如何,没有人会明白这一点。

考虑到这一点.并且..是有效的文件名(只是解释不同),你应该坚持你所拥有的,依靠含义而不是内部调用它们的方式。

  • 确实是这样,但是`IsDotOrDotDot()` 几乎没有说明函数在做什么。 (2认同)
  • @JensErat 我会使用`IsDotOrDotDot`。任何了解文件系统概念的人都会立即理解它。`.bash_history` 是否是“点”是有争议的,因为没有提供“点”的含义的上下文,但它绝对不是“点或点”。 (2认同)