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


22

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


1
单斜杠?单反斜线?单期还是双期?

所有斜杠组合和单斜杠似乎都可以使用,但是单周期和双周期确实失败了,因为它们已经在使用中。我希望还有更多.... :)
罗德尼·弗利

您不能使用ASCII NUL。想一会儿,您可能会发现自己的原因……
Donal Fellows

@Donal ASCII NUL不是您可以轻松地“键入”或错误地做问题的东西。
罗德尼·佛利

1
罗德尼,你能给我们介绍一下情况吗?如果我们对您要尝试的操作有所了解,它将对回答这个问题有很大帮助。AFAIK,存在一些潜在的问题:诚实的上帝禁止的字符,无法作为字符输入的字符终端外壳中的路径,以及在Finder中无法正确显示的字符。
Shog9

Answers:


7

HFS Plus允许“ Unicode,包括NUL在内的任何字符。OSAPI可能会出于传统原因限制某些字符”


3
Techincally的HFS +文件系统,并允许所有Unicode字符(因为它在内部代表的名字与一个2字节长度的Pascal字符串),但据我所知没有由OS X提供的API允许你创建/打开文件以斜线'/'或NUL '\0'在其中。
亚当·罗森菲尔德

像碳还是可可中的API?我认为Terminal受到这样的限制,但是其他程序(例如,启动的)运行的脚本又如何呢?
tobylane 2011年

8

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

Wiki HFS +

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


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


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

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

2

已编辑

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


2
:在Mac OS Classic上可能被禁止,但在Mac OS X上肯定没有被禁止- touch foo:bar效果很好。
亚当·罗森菲尔德

1
答案已更新。欢迎您删除您的弃权票。

5
@Adam::在“ unix层”中有效,但/在“ Mac层”中(即Finder,大多数与文件相关的对话框等)被转换为/从中转换:冒号用作“ HFS路径”中的分隔符”,而斜线用作“ POSIX路径”中的分隔符,因此根据您使用的是哪个“层”,可以进行双向转换。
克里斯·约翰森

2
因此,没有安全的正斜杠(/)或冒号(:)吗?
Nicolas Miari '16

2
@NicolasMiari是的。Finder.app不允许您输入冒号,并且不能与包含冒号的文件名一起正常使用。UNIX层不允许您使用包含斜杠的文件(或更确切地说,它将其转换为冒号)。然后还有其他应用程序(例如Microsoft Word)会阻塞。例如,如果将文档保存在TextEdit.app中文件名下foo/bar.docx(有效),Microsoft Word将无法打开它。
康拉德·鲁道夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.