人们说你不应该在 Unix 文件命名中使用空格。是否有充分的理由不在文件名中使用大写字母(即File_Name.txt
与file_name.txt
)?或者这只是个人喜好问题?
答案1
人们说 Unix 文件命名中不应该有空格。
人们说了很多话。有些工具可能会出错,但希望目前它们的数量很少,因为空间是一种由大型消费者专有操作系统公司扩散的病毒,现在无法避免。
空格使得在命令行等上指定文件名变得很尴尬。就是这样。 *nix 系统上唯一明确禁止的字符是 NUL(不用担心,它不在您的键盘上,也不在其他任何人的键盘上)和/
,因为这是路径分隔符。1 除此之外,一切都可以。单个路径元素(文件名)限制为 255 个字节(如果您使用扩展字符集,可能会出现复杂情况)和 4 KiB 的完整路径。
或者这只是个人喜好问题
我想说是的。大多数 DE 似乎都会在您的目录中创建大量大写的目录$HOME
(Downloads
、Desktop
、Documents
-D
非常流行),因此这没有什么奇怪的。还有一些非常常见的带有大写字母的传统文件,例如.Xclients
和.Xauthority
。
在开头大写的一个价值是,当按字典顺序列出时,它们会出现在小写的内容之前 - 至少,对于许多工具来说,并且受区域设置的影响。
我是驼峰式命名法(又名camelCase)的粉丝,并将其与文件名一起使用,例如,/home/goldilocks/blueSuedeShoes
--别介意里面有什么。这绝对是个人喜好的问题,但它尚未引起我的悲伤。
Java 类文件本质上倾向于包含大写字母,因为 Java 类名也是如此。当然,我们不要忘记NetworkManager
,即使我们中的一些人愿意这样做。
1. 有一个更多的分隔符,由 POSIX 推荐“可移植文件名字符集”那不包括空格——但它确实包括大写! POSIX还指定了有关“斜杠字符和空字节”的更一般限制同一文档中的其他地方。这反映了,或者反映在,长期存在的传统做法。
答案2
避免文件名大写的原因之一是 Unix 中的排序顺序区分大小写,因此以大写字母开头的文件将出现乱序。这就是为什么Makefile
通常使用大写字母命名的原因M
- 它是您想要首先看到的文件之一,而无需向下滚动/跳过 trough a-l
。
也就是说,您可以在文件名方面做得更糟:
- 使用空格会破坏一些写得不好的程序和脚本,这些程序和脚本不能正确引用文件名
- 以 a 开头的文件名
-
可能会导致问题,因为许多程序会将其视为命令行选项而不是文件名(例如,rm -r
不会删除名为 的文件-r
)。 - 以 a 开头的文件名将
.
在许多实用程序和 shell 通配中隐藏它(例如rm *
不会删除类似 的文件.config
) - 使用特殊字符(例如
|<>*?
,甚至不可打印字符)newline
在技术上是可行的,但可能会破坏类似于空格字符的脚本/程序。不同之处在于,空格字符经常被使用,因此程序员倾向于根据它来测试他们的程序,而不太流行的字符通常未经测试。
答案3
如果您要与 Windows 环境进行交互,则应避免使用大写字母,因为 Windows 会将所有内容小写。这通常是一个反面的问题;的链接在 Windows 中Page_2.html
可以找到page_2.html
,但在 Unix 中会失败。
答案4
避免使用大写字母的原因之一是bash
制表符补全区分大小写(至少默认情况下如此)——这仍然每当我最终遇到bash
默认配置时,都会让我绊倒。当然,还有其他流行的 shell,但这与许多操作系统上的默认登录 shell 相结合意味着bash
默认情况下通常是区分大小写的完成。使用全小写文件名可以简化这里的事情。