windows
在 Windows 文件系统中,以下字符是保留字符,不能用于文件名或目录名:
<(小于号)>(大于号):(冒号)"(双引号)/(斜杠)\(反斜杠)|(竖线)?(问号)*(星号)
此外,文件名不能以空格或句点 (.) 结尾,虽然句点可以出现在文件名的中间。文件名也不能使用下列保留的文件名,无论是否包含文件扩展名:
CONPRNAUXNULCOM1到COM9LPT1到LPT9
这些保留的文件名及字符是由 MS-DOS 早期的设计决定的,并一直保留到现代的 Windows 文件系统中。确保在创建文件名时避开这些保留字符和名字,可以避免潜在的问题。
macos ios
在 macOS 和 iOS 文件系统中,以下字符是保留字符,不能用于文件名或目录名:
:(冒号):在 macOS 和 iOS 中,冒号是保留的文件名字符,因为它被用作路径分隔符(类似于 Windows 中的斜杠/)。
此外,虽然 macOS 和 iOS 的文件系统(如 APFS 和 HFS+)相对宽松,并允许大多数 Unicode 字符作为文件名,但最好避免使用以下字符,因为它们在命令行和脚本中可能具有特殊含义,或者在不同的系统中可能会引起兼容性问题:
/(斜杠):虽然在 macOS 文件系统中实际可以使用(在 POSIX 路径中用作目录分隔符),但在 Finder 和其他用户界面中不能使用。\(反斜杠):在许多编程语言和脚本中是转义字符。*(星号)?(问号)"(双引号)<(小于号)>(大于号)|(竖线)
虽然技术上这些字符中的一些可能在文件名中可用,但在实践中避免使用这些字符可以避免跨平台兼容性问题和意外的脚本错误。
总的来说,最安全的文件命名策略是在所有平台上避免使用这些特殊字符::, /, \, *, ?, ", <, >, 和 |。这样可以确保最大程度的兼容性和减少潜在的问题。
linux
在 Linux 文件系统中,大多数字符都可以用于文件名,但有以下两个字符是绝对不能用于文件名的:
/(斜杠):斜杠用于目录分隔符,因此不能在文件名中使用。\0(空字符):空字符表示字符串结束符,也不能在文件名中使用。
虽然大多数其他字符在文件名中是允许的,但有些字符在命令行和脚本中具有特殊意义,最好避免使用,以免引起不必要的问题。这些字符包括:
\(反斜杠):在许多编程语言和脚本中是转义字符。*(星号):在命令行中用于通配符匹配。?(问号):在命令行中用于匹配单个字符。"(双引号):用于引用字符串。'(单引号):用于引用字符串。|(竖线):用于管道命令。&(和号):用于后台执行命令。;(分号):用于分隔命令。>(大于号):用于重定向输出。<(小于号):用于重定向输入。(和)(小括号):用于子 shell 和命令组。{和}(大括号):用于命令组。[和](方括号):用于字符类匹配和数组索引。!(惊叹号):用于命令历史记录。
尽管这些字符在技术上可以包含在文件名中,但它们在命令行和脚本中有特殊意义,因此使用它们时需要小心。为了避免潜在的问题,最好在文件名中避免使用这些特殊字符。
在使用命令行的时候,比如cp,需要转义,比如:

php需要如下写:
