在不同的操作系统中,哪些字符是允许的,并且哪些字符必须在命令行上转义?
在不同的操作系统中,哪些字符是允许的,并且哪些字符必须在命令行上转义?
Answers:
在Wikipedia上有关文件名的文章中讨论了文件名字符。
您可能会发现本文内容丰富:修复Unix / Linux / POSIX文件名。
本文比较了OS X和Windows XP:X与XP:文件名中的禁止字符(PDF,请参阅第64-66页)。
我不知道必须取消转义哪些字符,但是在Linux中,转义可能具有特殊含义的字符(例如“ n”(换行符),“ t”(制表符)等)可能不是一个好主意,但这通常不是文件操作中的问题。也许您的意思是“转义”而不是“未转义”。最常见的是shell将解释的内容,例如空格,“>”,“ <”等。有关这些内容的讨论,请参见我链接的一些文章。
* nix文件名中不允许的唯一字符是NUL
和/
。在Windows中,唯一NUL
,:
和\
是真正不允许的,但许多应用程序限制进一步,也防止?
,*
,+
,和%
。
除非有必要,否则文件名中的任何字符都无需转义,以免被shell解释。
如果您在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
\ / : * ? " < > |
所有这些转义,并在我的GNU / Linux系统上使用mkdir创建它们。您也可以mkdir '?'
用来创建?
目录。我已经使用ramdisk和XFS文件系统进行了测试。
在Linux和其他POSIX兼容系统上,保留“ /”,因为它是目录分隔符,而“ \ 0”(NULL字符)则指定字符串的结尾。其他所有内容都是允许的。