文件名中的保留字符

文件名中的保留字符

我的印象是文件名中唯一不允许的字符是,/但我似乎无法创建名称包含*\":|或其中之一等字符的文件。例如,<>

$ echo "*"
> *
$ touch "*"
> touch: setting times of `*': No such file or directory

我正在编写一个 shell 脚本,要求用户输入文件名,并且我想确保该名称不包含任何无效字符。某处有一个列表吗?

更新:

我没有意识到我是在 FAT32 文件系统(USB 记忆棒)中执行此操作,该文件系统不允许在文件名中使用“*”和其他字符。难怪它不起作用。对不起这是我的错!!

答案1

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

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

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

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

答案2

好吧,实际上你可以,只需将其设为单引号,

例如touch '*'

或者使用您的 FM:

在此输入图像描述

有关更多详细信息,请参阅Reserved characters and words 在本页,至少/ \ . ..是不允许的

相关内容