71 filenames
我想知道 Unix 中文件的命名约定是什么?我不确定这一点,但我认为可能有一个应该遵循的通用命名约定?
例如,我想命名一个文件说:backupwith part 2andrandom
我应该这样做吗:
backup_part2_random
或者
backup-part2-random
或者
backup.part2.random
我希望这个问题很清楚。基本上,我想选择一种符合 Unix 哲学的格式。
Mik*_*kel 66
.用于分隔文件类型扩展名,例如foo.txt.
-或_用于分隔逻辑词,例如my-big-file.txt或有时my_big_file.txt。 -更好,因为您不必按 Shift 键(至少使用标准的美国英语 PC 键盘),其他人更喜欢,_因为它看起来更像一个空格。
所以如果我理解你的例子,backup-part2-random或者backup_part2_random最接近正常的 Unix 约定。
CamelCase 通常不用于 Linux/Unix 系统。在看看文件名/bin和/usr/bin。CamelCase 是 Unix 和 Linux 系统上的例外而不是规则。
(这NetworkManager是我能想到的唯一一个使用 CamelCase 的例子,它是由 Mac 开发人员编写的。许多人抱怨这种名称选择。在 Ubuntu 上,他们实际上已将脚本重命名为network-manager.)
例如,/usr/bin在我的系统上:
$ ls -d [A-Z]* | wc -w # files starting with a capital
6
$ ls -d *_* | wc -w # files containing an underscore
178
$ ls -d *-* | wc -w # files containing a minus/dash
409
Run Code Online (Sandbox Code Playgroud)
即便如此,以大写开头的文件都没有使用 CamelCase:
$ ls -d [A-Z]*
GET HEAD POST X11 Xvnc Xvnc4
Run Code Online (Sandbox Code Playgroud)
Law*_*ceC 22
我对 Unix/Linux 文件名约定的看法:
Unix/Linux 文件系统本身并不支持扩展的概念。文件扩展名的概念,一些支持工具如完全存在cp,ls或者您使用的shell。我相信在 NTFS 上也是这样,但我可能是错的。
可执行文件,包括 shell 脚本,通常没有任何类型的扩展名。脚本将有一个 hashbang 行(即#!/bin/bash)标识应该解释它的程序。
/etc结尾的文件tab也非常重要,例如fstab, mtab, inittab..d会附加到目录名称,特别是在/etc,但这并不普遍(更新:https : //serverfault.com/questions/240181/what-does-the-suffix-d-mean-in-linux)rc广泛用于配置脚本或文件,无论是前置(例如,rc.local)还是后缀(.vimrc).htm在 Unix/Linux 上的 HTML 文件末尾使用,而是使用.html.Makefile在源包中。只对像README.~用于标识备份文件或目录,如important_stuff~、 或/etc~。许多贝壳会单独扩展~到$HOME. lib. 例外是zlib,可能还有其他一些。in.,例如in.tftpd.vmlinuz表示已压缩,但我从未见过任何其他以这种方式命名的文件。在 unix 中,文件名只是一个字符串,不像 DOS,文件名由名称和扩展名组成。所以任何给定的文件名都是完全可以接受的。
但是很多程序仍然使用以点开头的文件后缀来区分不同的文件类型,即 Apache Web Server 使用后缀来设置答案标题中正确的 MIME 类型。
小智 6
两个想法:
在GNU 编码标准Naming Variables, Functions, and Files部分,您会发现:
请使用下划线分隔名称中的单词,以便 Emacs 单词命令在其中有用。坚持小写;
虽然 IMO 说“你应该使用_emacs”似乎有点过时,但它仍然在他们的“标准”文件中。
让我们暂时假设我们都同意 linux 内核是 linux 项目的万能*,并且那里使用的约定可以被视为“标准”约定。
grep-ing linux 内核的源代码,您会发现以下内容:
有趣的是,git的源代码中,破折号占85%,下划线占 3.8 %,两者占 11.1%。
选择是明确的,争论不休。;)
个人意见:我使用破折号是出于审美和转移关键原因。如果您在团队中工作,请投票。但是要重申所说的话,请保持一致。
*或“be_all 和 end_all”(如果您愿意)
坚持使用字母数字文件名。避免使用空格或用下划线 ( _ ) 替换空格。将文件名中的标点符号限制为句点 (.)、下划线 (_) 和连字符 (-)。通常文件名是小写的,但是当文件名中有多个单词时,我会使用 CamelCase。
使用指示文件类型的扩展名。程序不需要扩展,因为执行位用于指示程序,并且外壳程序知道如何运行各种类型的程序。对于 shell 脚本来说是 (.sh),对于 perl 脚本来说是 (.pl),这很常见但不是必需的。Windows 可执行文件扩展名 .bat、.com、.scr 和 .exe 表示 Unix 上的 Windows 可执行文件。
选择一个标准并坚持下去。但如果你避免它,它不会破坏事情。
隐藏(或点)文件的名称以句点开头。这些通常不会出现在目录列表中。使用 'ls -a' 将点文件包含在列表中。
小智 4
文件名中不应使用的字符:
| ; ,!@# $ ( ) < > / \ " ' ` ~ { } [ ] = + & ^
您应该使用字符分隔符来使名称更易于阅读:
_ - . :
(在某些情况下“:”有特殊含义)