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

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

我有一个函数,用于检查传入的文件名是否为...。但我不知道如何正确命名它。 类似于 的东西IsCurrentOrParentDirectory()是模棱两可的,因为该函数采用文件名而不是完整路径。(直觉上,一位程序员会认为/usr/当我在 时传递/usr/会返回true,但事实并非如此。)

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

答案1

来自POSIX 标准

特殊文件名点应引用其前身指定的目录。特殊文件名点-点应引用其前身目录的父目录。作为特殊情况,在根目录中,点-点可以引用根目录本身。

所以,实际上,如果你想检查文件名是否是.或,..你必须称其为IsDotOrDotDot(),或者,使用 POSIX 路径名解析术语,,IsPredecessorOrParentOfPredecessor()甚至可能PointsToPredecessorOrParentOfPrecedessor()......你明白了。问题是后一种术语只有在查看完整路径名时才有意义。但无论如何,没有人会理解这一点。

考虑到和...有效的文件名(只是解释不同),你应该坚持你所拥有的,依赖于意义而不是它们内部的调用方式。

答案2

...通常用于描述相对路径与绝对路径,例如/usr。我将利用这种差异并将函数声明为IsRelativeCurrentOrParentDirectory()

请注意,点引用可能出现在路径中的任何位置。那怎么办/usr/local/..

答案3

slhck♦ 引用的 POSIX 标准指出,

特殊文件名点应指…。  特殊文件名点点应指…。

(强调)。因此,虽然这并不完全是技术的看起来“特殊文件名”可能就是官方的名称。如果您将函数命名为以下任何一种,您的用户可能就会理解: IsSpecialDirectory()IsSpecialFilename()或简称IsSpecialName()

或者你也可以使用IsStandardDirectory()IsStandardFilename()IsStandardName()。这遵循 Unix 命名约定(标准输入、标准输出),用于自动为你建立的事物(在本例中为mkfsmkdir)。  另一方面,IsAutomatic…()或可能不够直观。IsDefault…()

答案4

Posix 在谈论父子目录关系时相当含糊。正如其他人所说,./..在与其他人交谈或交流时没有帮助。

文件结构可以看作是一种树形数据结构。在这里,通常“父”和“子”或“女儿”就足以传达含义。你会看到数据结构教科书都遵循这种惯例

或者,似乎可以将树称为树的“上”和“下”。按照惯例,“上”表示更靠近根目录,“下”表示子目录。

我认为或都IsCurrentOrUp()可以IsCurrentOrParent()说是命名函数的良好做法。

相关内容