大多数 Linux 发行版的最新版本都允许在文件和目录命名中使用空格。我想知道是否有一种方法可以禁用它并返回到文件系统命名中没有空格的旧 UNIX 标准,以及如何在一些常见发行版中完成此操作的示例,例如、Ubuntu
等。RHEL
Fedora
答案1
这不可能。另请解释一下“大多数 Linux 发行版的最新版本”是什么意思:据我所知,自 1974 年创建的第一个版本的 UNIX System V 文件系统以来就支持空格。
答案2
/
与大多数其他 Unix 变体(包括原始版本)一样,Linux 始终允许文件名中包含除 和 null 之外的任何字节。
要改变这一点,您需要修改内核中的文件系统代码。我不知道有任何现有的补丁可以做到这一点。甚至没有用于尝试创建不受支持的文件名的标准错误代码,只有 ENAMETOOLONG 专门用于文件名或路径长度太大的情况。 EINVAL 将是一个合理的选择; Linux 的 FAT 驱动程序使用的就是它。
POSIX 定义了一个可移植文件名字符集由 ASCII 字母、数字和三个标点符号组成.-_
。然而,许多unix应用程序希望其他字符能够工作:一些程序的名称包含+
(例如c++
),X11和Perl想要:
,CVS想要,
,Emacs想要#
,Gnome想要%
(对于gconf),很多程序想要~
备份文件,一些程序想要%
对于 URL 编码,某些程序需要=
和+
Base64 等。