Linux/Windows/Unix/... 文件名:允许使用哪些字符?哪些字符无需转义?

Linux/Windows/Unix/... 文件名:允许使用哪些字符?哪些字符无需转义?

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

答案1

维基百科文章中有关于文件名字符的讨论文件名

你可能会发现这篇文章很有信息量:修复 Unix/Linux/POSIX 文件名

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

1000 美元文件名中不应该包含的内容 Alex

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

答案2

*nix 中不允许在文件名中使用的字符只有NUL/。在 Windows 中,只有NUL:\是真正不允许的,但许多应用程序对此进行了进一步限制,同时阻止了?*+%

文件名中的任何字符需要除非有必要,否则必须进行转义,以免被 shell 解释。

答案3

如果您在 Windows 上使用资源管理器使用下列字符之一创建文件,系统将会抱怨这些字符不被允许:

\ / : * ? " < > |

这里是一个很好的参考:

命名文件、路径和命名空间
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx

微软进一步表示:

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

http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars.aspx

答案4

在 Linux 和其他 POSIX 兼容系统上,“/”被保留为目录分隔符,而“\0”(NULL 字符)表示字符串的结尾。其他所有内容均允许。

相关内容