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

jav*_*top 48 linux windows filesystems command-line-interface

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

Ign*_*ams 29

*nix 中文件名中唯一不允许的字符是NUL/。在Windows中,唯一NUL:\是真正不允许的,但许多应用程序限制进一步,也防止?*+,和%

在任何时候都不需要对文件名中的任何字符进行转义,除非需要,以免被 shell 解释。


Den*_*son 28

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

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

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

1,000 美元不应该出现在文件名中的东西 Alex

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

  • 这并不是真正的答案——所有信息都是外部的。其中一些链接现在已损坏。 (11认同)

Gre*_*kew 15

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

\ / : * ? " < > |
Run Code Online (Sandbox Code Playgroud)

一个很好的参考在这里:

命名文件、路径和命名空间
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


jan*_*neb 6

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

  • 尽管强烈建议避免使用换行符、制表符、控制字符等,并确保文件名是有效的 UTF-8。 (2认同)