在不同的操作系统中,命令行上哪些字符是允许的,哪些字符必须转义?
答案1
维基百科文章中有关于文件名字符的讨论文件名。
你可能会发现这篇文章很有信息量:修复 Unix/Linux/POSIX 文件名。
本文比较了 OS X 和 Windows XP:X 与 XP:文件名中的禁用字符(PDF,参见第 64-66 页)。
我不知道哪些角色必须联合国-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 字符)表示字符串的结尾。其他所有内容均允许。