在文件命名中不使用大写字母是否被认为是最佳实践?

在文件命名中不使用大写字母是否被认为是最佳实践?

人们说你不应该在 Unix 文件命名中使用空格。是否有充分的理由不在文件名中使用大写字母(即File_Name.txtfile_name.txt)?或者这只是个人喜好问题?

答案1

人们说 Unix 文件命名中不应该有空格。

人们说了很多话。有些工具可能会出错,但希望目前它们的数量很少,因为空间是一种由大型消费者专有操作系统公司扩散的病毒,现在无法避免。

空格使得在命令行等上指定文件名变得很尴尬。就是这样。 *nix 系统上唯一明确禁止的字符是 NUL(不用担心,它不在您的键盘上,也不在其他任何人的键盘上)和/,因为这是路径分隔符。1 除此之外,一切都可以。单个路径元素(文件名)限制为 255 个字节(如果您使用扩展字符集,可能会出现复杂情况)和 4 KiB 的完整路径。

或者这只是个人喜好问题

我想说是的。大多数 DE 似乎都会在您的目录中创建大量大写的目录$HOMEDownloadsDesktopDocuments-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默认情况下通常是区分大小写的完成。使用全小写文件名可以简化这里的事情。

相关内容