OS X 下文件名的无效字符是什么?

Rod*_*ley 28 path filesystems osx-lion macos

我无法找到此信息,反复试验告诉我可能没有任何信息。OS X Lion (10.7) 上文件名的无效字符是什么?

tob*_*ane 10

HFS Plus允许“ Unicode,任何字符,包括 NUL。操作系统 API 可能会出于遗留原因限制某些字符”

  • 从技术上讲,HFS+ 文件系统确实允许所有 Unicode 字符(因为它在内部将名称表示为具有 2 个字节长度的 Pascal 字符串),但 AFAIK 没有任何由 OS X 提供的 API 允许您创建/打开带有斜杠“/”的文件` 或 NUL `'\0'` 在其中。 (4认同)

Lri*_*Lri 8

OS X 下文件名的无效字符是什么?

维基 HFS+

文件名中允许的字符Unicode,任何字符,包括 NUL。出于遗留原因,操作系统 API 可能会限制某些字符


Finder 目前不允许在文件名中输入冒号,但它允许输入反斜杠。然而,在 Finder 中显示为斜杠的字符在 shell 中显示为冒号,反之亦然。Finder 也不允许任何 ASCII 控制字符。


Bash 似乎允许除\000(NUL)之外的所有控制字符。我通过运行以下输出来测试它:

for i in {1..31} 127 0; do echo touch \\$(bc <<< "obase=8;$i"); done
Run Code Online (Sandbox Code Playgroud)


小智 5

编辑

根据Wikipedia 的说法,唯一无效的字符是正斜杠/,但在 UNIX 层。

  • @Adam:`:`在“unix层”中有效,但它在“Mac层”中被转换为/从“/”(即Finder,大多数与文件相关的对话框等):冒号用作“HFS 路径”中的分隔符和斜杠用作“POSIX 路径”中的分隔符,因此根据您正在使用的“层”,存在双向转换。 (8认同)
  • 也许 `:` 在 Mac OS Classic 上是被​​禁止的,但在 Mac OS X 上肯定不会——`touch foo:bar` 工作得很好。 (5认同)
  • @NicolasMiari 是的。Finder.app 不允许您输入冒号,并且无法正确处理包含冒号的文件名。UNIX 层不允许您使用包含斜杠(或者更确切地说;它将其转换为冒号)的文件。还有其他应用程序(例如 Microsoft Word)也会被这两种应用程序卡住。例如,如果您在 TextEdit.app 中以文件名“foo/bar.docx”(有效)保存文档,Microsoft Word 将无法打开它。 (5认同)
  • 答案已更新。欢迎您删除您的反对票。 (3认同)
  • 那么,没有正斜杠(`/`)或冒号(`:`)是安全的吗? (2认同)