ter*_*don 10 filesystems filenames newlines
根据此页面:
Linux 中的文件名可以包含除 (1) 正斜杠 ( / ) 之外的任何字符,正斜杠 ( / ) 保留用作根目录的名称(即包含所有其他目录和文件的目录)和目录分隔符, 和 (2) 空字符(用于终止文本段)。允许使用空格,但最好避免使用空格,因为在某些情况下它们可能与遗留软件不兼容。
太好了,这两个限制都很有意义。既然显然可以禁止在文件名中包含某些字符,为什么允许换行?据我所知,它们的唯一用途是使我们的脚本复杂化。是否有正当理由在文件名中换行?
NUL
并/
具有其指定的系统功能。其他字符没有。
这就是它的基础——剩下的就是意见、推测和历史。听到的,阅读等,并且仅包括作为填料不是辩论或参数:
<CR>
对<LF>
等然后继续
基本操作系统没有设置限制。进出系统的信息是字节流。如果一个字节没有特殊含义,不要通过添加应该在用户空间处理的检查来创建开销。
无论如何,最大的问题很可能是允许换行符和其他控制字符的相当长的历史。
另一种情况是禁止什么。您提到了换行符,但在 UNIX 石器时代的讨论中,这一直在争论,然后还包括其他字符。应该*
禁止吗?以-
?开头的文件名怎么样?怎么样DEL
和ESC
?是否应该禁止所有控制字符?等等等等。
不幸的是,我不记得创始人或代码维护者对这个主题的任何引用。