wake-up-neo.com

Linux / Windows / Unix / ...文件名:允许使用哪些字符?哪些未逃脱?

在不同的操作系统中,哪些字符允许使用,哪些字符必须在命令行上转义?

43
java.is.for.desktop

在Wikipedia上关于 文件名 的文件名字符的讨论。

您可能会发现这篇文章内容丰富: 正在修复Unix/Linux/POSIX文件名

本文比较了OS X和Windows XP: X与XP:文件名中的禁止字符 (PDF,请参阅第64-66页)。

$ 1,000 Alex不应在文件名中显示的内容

我不知道哪些字符必须un转义,但是在Linux中,转义可能具有特殊含义的字符可能不是一个好主意例如“ n”(换行符),“ t”(制表符)等,但这在文件操作中通常不是问题。也许您的意思是“转义”而不是“未转义”。最常见的是Shell会解释的内容,例如空格,“>”,“ <”等。有关这些内容的讨论,请参见我链接的一些文章。

27

* nix文件名中不允许的唯一字符是NUL/。在Windows中,只有NUL:\确实是不允许的,但是许多应用进一步限制了此限制,同时也防止了?*+%

除非有必要,否则文件名中的任何字符需要都不得转义,除非Shell不解释。

26
Ignacio Vazquez-Abrams

如果您在Windows资源管理器中使用以下字符之一创建文件,它将抱怨不允许使用这些字符:

\ / : * ? " < > |

一个很好的参考在这里:

命名文件,路径和命名空间
http://msdn.Microsoft.com/zh-cn/library/aa365247%28VS.85%29.aspx

微软进一步声明:

“ ...在基于Windows的桌面平台上,无效的路径字符可能包括ASCII/Unicode字符1到31,以及引号(”),小于(<),大于(>),竖线(|),退格键(\ b),空(\ 0)和制表符(\ t)。”

http://msdn.Microsoft.com/zh-cn/library/system.io.path.getinvalidpathchars.aspx

14
Greg Askew

在Linux和其他POSIX兼容系统上,保留“ /”,因为它是目录分隔符,而“\0”(NULL字符)则指定字符串的结尾。其他所有内容都是允许的。

5
janneb