Ern*_*A C 2 shell filenames fat
我的印象是,在文件名中不允许使用的唯一角色是下/
的,但我似乎并没有能够创造出其名称的文件中包含的字符,如*
,\
,"
,:
,|
,<
或>
无论是。例如,
$ echo "*"
> *
$ touch "*"
> touch: setting times of `*': No such file or directory
Run Code Online (Sandbox Code Playgroud)
我正在编写一个要求用户输入文件名的 shell 脚本,我想确保该名称没有任何无效字符。某处有清单吗?
更新:
我没有意识到我是在 FAT32 文件系统(USB 记忆棒)中这样做的,它不允许在文件名中包含“*”和其他字符。怪不得没用。对不起这是我的错!!
我很确定唯一的保留字节是 0(ASCII Nul)和 0x2f(ASCII '/',正斜杠)。
您可以轻松地创建一个包含“.”、“\”和其他时髦内容的文件。想想“unicode 文件名”,它包含各种奇怪的字节值。
自然,同一目录中不能有重复的文件名,因此文件名为“.”。并且“..”通常不能由单纯的用户创建:内核的文件系统部分在创建目录时创建它们。
另请注意,大多数文件系统对文件名的长度都有限制,您不能创建名称为空字符串的文件。