文件名中的保留字符

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 记忆棒)中这样做的,它不允许在文件名中包含“*”和其他字符。怪不得没用。对不起这是我的错!!

Bru*_*ger 6

我很确定唯一的保留字节是 0(ASCII Nul)和 0x2f(ASCII '/',正斜杠)。

您可以轻松地创建一个包含“.”、“\”和其他时髦内容的文件。想想“unicode 文件名”,它包含各种奇怪的字节值。

自然,同一目录中不能有重复的文件名,因此文件名为“.”。并且“..”通常不能由单纯的用户创建:内核的文件系统部分在创建目录时创建它们。

另请注意,大多数文件系统对文件名的长度都有限制,您不能创建名称为空字符串的文件。