为什么 Linux vfat 驱动程序不允许某些字符?

rkj*_*nsn 5 linux filesystems fat vfat

Linux vfat 驱动程序似乎不允许在 vfat 长文件名中使用某些字符:?<>\:*|". 我知道 Windows 不支持这些字符,但维基百科似乎表明文件系统本身支持任何非空的 16 位 unicode 字符。如果是这种情况,为什么 Linux 驱动程序会限制可用字符?仅仅是为了兼容性,还是实际上存在维基百科页面上未提及的技术限制?如果是前者,是否有办法覆盖此限制?

NTFS-3g 支持将这些字符写入 NTFS,这在我使用外置硬盘在 Linux 系统之间移动文件时非常有用。如果我能用 VFAT 做同样的事情,那就太好了。

小智 1

如果我没有记错的话,Windows 支持的任何文件系统(FAT/VFAT/FAT32/NTFS)都应该满足有效文件和目录名称的一些标准命名约定。上述字符列表是保留字符,即使是 Unicode 字符也无法使用。

我想说的是 fat/vfat 文件系统的 Linux 实现试图符合这种“Windows 标准”。也许,这篇文章可以带来更多有关它的细节。