目录中的项目是否有通用术语?

Mas*_*son 29 filesystems

我只是好奇是否有一个标准的计算机术语包含目录中的所有内容,而不是总是不得不分别提及“文件”和“(子)目录/文件夹”。所以,你可以说,在所有的回路term以s dir_1

编辑:为了清楚起见,我正在寻找一个单数术语,就像我的例句一样。

小智 52

POSIXreaddir文档使用这个词条目

READDIR()函数将返回一个指针表示在由参数指定的目录流中的当前位置的目录条目的结构dirp,并在下一个条目的目录流位置。到达目录流的末尾时,它将返回一个空指针。<dirent.h>头文件中定义的结构dirent描述了一个目录条目。

  • 严格地说,一个文件(在 POSIX 意义上)可能有多个目录条目(硬链接文件或任何目录),或者根本没有(未链接但仍然打开的文件)。文件和条目是单独的对象。 (8认同)

Kam*_*ski 43

文件。至少在符合 POSIX 的系统中是这样。

3.164 文件

可以写入或读取或两者兼有的对象。文件具有某些属性,包括访问权限和类型。文件类型包括常规文件、字符特殊文件、块特殊文件、FIFO 特殊文件、符号链接、套接字和目录。实现可能支持其他类型的文件。

来源

人们在说“文件”时只表示“常规文件”并不是真正符合 POSIX 标准。:)

您可以从这个问题的答案中了解 POSIX 是什么。各种操作系统是否符合 POSIX(完全或大部分)。不详述,此答案适用于 Unix 和类 Unix 系统(包括 macOS、Linux、BSD),但不适用于一般的 Windows 系列。

  • 我真的很想念真正符合 POSIX 标准的人 :( (26认同)
  • @val 不幸的是,大多数人的名字中有一个非法的空格字符 (7认同)
  • @OrangeDog 这可以解释为什么许多 bash 脚本在它们上面失败 (3认同)

Mr *_*net 9

好问题。

我使用“内容”作为包含文件和子文件夹的术语。

例如:“我们需要复制该目录的所有内容。”


Pet*_*des 9

有提出文件条目的好答案。(如果您不明白为什么这些词合适,请阅读它们,并记住在 POSIX 中“文件”包括所有类型的 inode(包括目录),而不仅仅是常规文件)。 目录条目(文件名)是对文件/inode 的引用

一个文件在不同的目录中可以有多个名称(链接数 > 1)。实际的文件数据/inode 不存储包含它的文件名的目录中。

但是理智的人说“读取某个目录中的文件”之类的事情是没有问题的。总是在文件(inode + 数据)和引用它的文件名/目录条目之间进行区分是不必要的迂腐。

另请注意,现代文件系统中的目录条目通常还存储“类型”字段,因此程序find不需要stat(2)每个文件来检查谓词find -type f(常规文件)与符号链接等。或者在递归时查找目录本身的条目。请参阅检查目录。readdir 返回的条目是目录、链接或文件。dent->d_type 没有在 Stack Overflow 上显示类型


“路径”类似于foo/bar或是/a/b/foo/bar以文件名结尾的字符串,但可以使用目录来引用不在当前目录中的文件名。 foo是一个简单的路径,也是一个文件名。但是foo/bar是文件名,也是路径。但是你可以争论它不是“文件名”的语义。路径或路径名的东西,你可以把信息传给系统调用像POSIXopen(2)chdir(2)或Win32的OpenFile()


您选择的术语(文件文件名目录条目)可能取决于上下文和您在做什么。例如,读取内容或 inode 元数据涉及实际文件。

但是,仅根据名称匹配 glob 表达式根本不涉及文件,涉及文件名/目录条目。

目录条目在实际循环类似 的函数时最合适readdir(3),或者例如“用于ln创建引用此文件的新目录条目”。在处理硬链接时,术语“目录条目”与文件有区别,比“文件名”更重要。

但是“名称”也有效。例如“具有 2 个名称的文件”。

更多的时候,你会使用像c_files=( *.c ). 或者fn(对于文件名)也是一个很好的本地使用变量名。

使用起来entries=( *.c )会感觉怪怪的。“条目”只在谈论循环遍历它们以获取文件名的过程时才感觉正确,而不是匹配某些过滤器的结果文件名集。