为什么文件名要小写?

简介:

上周,《中文技术文档写作规范》加入了文件的命名规则。

"文件名建议只使用小写字母,不使用大写字母。"

"为了醒目,某些说明文件的文件名,可以使用大写字母,比如README、LICENSE。"

网友看见了,就提问为什么文件名要小写?

说实话,虽然这是 Linux 传统,我却从没认真想过原因。赶紧查资料,结果发现四个很有说服力的理由,支持这样做。

下面就是这四个理由。

一、可移植性

Linux 系统是大小写敏感的,而 Windows 系统和 Mac 系统正好相反,大小写不敏感。一般来说,这不是大问题。

但是,如果两个文件名只有大小写不同,其他都相同,跨平台就会出问题。

  • foobar
  • Foobar
  • FOOBAR
  • fOObAr

上面四个文件名,Windows 系统会把它们都当作foobar。如果它们同时存在,你可能没办法打开后面三个文件。

另一方面,在 Mac 系统上开发时,有时会疏忽,写错大小写。


// 正确文件名是 MyModule.js
const module = require('./myModule');

上面的代码在 Mac 上面可以运行,因为 Mac 认为MyModule.js和myModule.js是同一个文件。但是,一旦代码到服务器运行就会报错,因为 Linux 系统找不到myModule.js。

如果所有的文件名都采用小写,就不会出现上面的问题,可以保证项目有良好的可移植性。

二、易读性

小写文件名通常比大写文件名更易读,比如accessibility.txt就比ACCESSIBILITY.TXT易读。

有人习惯使用驼峰命名法,单词的第一个字母大写,其他字母小写。这种方法的问题是,如果遇到全部是大写的缩略词,就会不适用。

比如,一个姓李的纽约特警,无论写成NYPoliceSWATLee还是NyPoliceSwatlee,都怪怪的,还是写成ny-police-swat-lee比较容易接受。

三、易用性

某些系统会生成一些预置的用户目录,采用首字母大写的目录名。比如,Ubuntu 在用户主目录会默认生成Downloads、 Pictures、Documents等目录。

Mac 系统更过分,一部分系统目录也是大写的,比如/Library/Audio/Apple Loops/。

另外,某些常见的配置文件或说明文件,也采用大写的文件名,比如Makefile、INSTALL、CHANGELOG、.Xclients和.Xauthority等等。

所以,用户的文件都采用小写文件名,就很方便与上面这些目录或文件相区分。

如果你打破砂锅问到底,为什么操作系统会采用这样的大写文件名?原因也很简单,因为早期 Unix 系统上,ls命令先列出大写字母,再列出小写字母,大写的路径会排在前面。因此,如果目录名或文件名是大写的,就比较容易被用户首先看到。

四、便捷性

文件名全部小写,还有利于命令行操作。比如,某些命令可以不使用-i参数了。


# 大小写敏感的搜索
$ find . -name abc
$ locate "*.htmL"

# 大小写不敏感的搜索
$ find . -iname abc
$ locate "*.HtmL"

另外,大写字母需要按下 Shift 键,多多少少有些麻烦。如果文件名小写,就不用碰这个键了,不仅省事,还可以提高打字速度。

程序员长时间使用键盘,每分钟少按几次 Shift,一天下来就可以省掉很多手指动作。长年累月,也是对自己身体的一种保护。

综上所述,文件名全部使用小写字母和连词线(all-lowercase-with-dashes),是一种值得推广的正确做法。

(正文完)

目录
相关文章
|
存储 测试技术 编译器
芯片测试:万字长文一起聊聊IC测试机-ATE
芯片测试:万字长文一起聊聊IC测试机-ATE
4162 0
|
前端开发 算法 Unix
面向前端设计的DFT基础介绍(一)——MBIST存储器内建自测试
本文介绍了MBIST存储器内建自测试的中,MBIST的特点,如何测试,Tessent加入的测试逻辑的结构等基础知识,继而以几个实例的图示和解读,描述了RTL设计满足MBIST设计的前置需求。
48022 3
面向前端设计的DFT基础介绍(一)——MBIST存储器内建自测试
|
7月前
|
人工智能 数据可视化 机器人
Qclaw:你的本地龙虾管家,一键管理 OpenClaw
Qclaw是OpenClaw的图形化管理工具,专为新手设计:一键安装、拳击龙虾钳引导界面、分步可视化配置(模型/API/飞书钉钉/群策略/Skills等),支持定时任务、费用看板、记忆管理与人设加载,让小白轻松上手AI机器人。
2645 2
Qclaw:你的本地龙虾管家,一键管理 OpenClaw
|
5月前
|
数据可视化 Windows
Altair HyperWorks 2025安装与汉化教程 Windows版:注册表+自定义路径+中文设置指南
HyperWorks 2025 是Altair集成化CAE仿真平台,内置HyperMesh、HyperGraph、MotionView、OptiStruct等核心工具,支持建模、分析、优化与可视化。本教程详解免激活安装、注册表导入、路径配置、文件替换及中文界面设置,助您快速完成部署。(239字)
2538 2
|
7月前
|
SQL Java 测试技术
告别 CRUD 泥沼!DDD 领域驱动设计:从底层原理到生产级全链路落地实战
DDD是应对复杂业务的架构思想,核心是“领域优先、边界隔离”:通过战略设计(统一语言、限界上下文、上下文映射)划清业务边界;通过战术设计(实体/值对象、聚合根、领域服务等)落地高内聚、低耦合的代码。非银弹,适用于规则多、迭代快、协作难的场景。
1785 1
|
6月前
|
Java
Abaqus 2026 安装教程:JDK配置+汉化详解(64位)
Abaqus 2026 是一款专业非线性有限元分析软件,支持材料、几何及边界非线性问题。本教程详述离线安装全流程:含JDK21配置、License部署、CAE/Standard/Explicit模块安装、环境变量设置及简体中文界面启用,操作清晰、一步一图。(239字)
|
9月前
|
存储 运维 NoSQL
Agentic RAG:用LangGraph打造会自动修正检索错误的 RAG 系统
本文介绍基于 LangGraph 与 Redis 构建生产级 Agentic RAG 系统,通过引入智能体机制实现检索结果的自动评估与查询重写,解决传统 RAG 回答偏离问题。系统具备自校正、决策透明与模块化优势,显著提升复杂场景下的问答准确率。
797 4
Agentic RAG:用LangGraph打造会自动修正检索错误的 RAG 系统
|
9月前
|
人工智能 自然语言处理 供应链
架构未来:智能体来了(西南总部)如何通过 Multi-Agent 协作定义下一代企业生产力?
智能体来了(西南总部)提出基于Multi-Agent的协作架构,通过角色分工、动态协同与工程化编排,构建企业“数字兵团”。以共享内存、DAG任务流与原子化工具调用,实现营销、制造、知识服务等场景的生产力跃迁,推动运营者向系统架构师转型,定义AI时代新生产关系。(238字)
306 2
|
数据采集 运维 自然语言处理
从误检到精准:手把手教你构建高可用RAG系统的黄金法则
本文系统拆解RAG系统开发中的十大关键误区,涵盖数据治理、检索优化、生成控制与系统运维四大维度,结合企业级实践提出四维优化框架,助力开发者构建高精度、高可用的RAG系统,提升检索与生成匹配效率,保障知识准确性与系统稳定性。
805 1