强制系统允许我在文件名中插入任何字符

强制系统允许我在文件名中插入任何字符

我这周参加了一场考试,其中一个问题是(有一个正确答案):

文件名可以包含字符:

A)\

b)/

C)?

d)!

我选择是c) ?因为它对我来说看起来不错。当我回到家时,我在我的机器(Ubuntu 14.04)上测试了它,并且文件创建成功。在现成的计算器中,正确答案被标记为d) !

我知道考试是针对 Windows 的,但试卷上没有指定平台。


很明显,文件名不支持\和字符,/有没有办法强制操作系统允许它们?

\如果能够证明偶数和/字符都受到支持,那真是太酷了。

答案1

在考虑文件名中允许的字符时,有两个限制因素:与操作系统相关的限制和与文件系统相关的限制。对于这个问题,我假设我们正在讨论最新版本的 Linux 和 ext4。

Linux 只不允许文件名中使用两个字符:/,因为它是路径分隔符,以及\0(ASCII NUL),因为它终止 cstrings。除此之外,文件系统还保留特殊名称...用作导航硬链接。

您可以轻松证明问题中提到的其他字符是允许的:

$ touch '\' '?' '!'
$ ls
!  ?  \

相关内容