我注意到很多涉及 Linux 的人(例如教程和指南)倾向于在命名文件时省略空格并将其替换为字符“_”,我想知道是否有这样做的理由。我还想知道命名文件时应避免使用哪些其他字符。那么大写字母呢?我发现人们对小写字母的偏好。
最后一个问题是,在 Linux 中命名我的歌曲的最佳方式是什么。例如,我得到了很多格式为: 的文件track. artist name - song name.mp3
,例如01. Crystal Castles - Untrust Us.mp3
.我是否应该将格式更改为track._artist_name_-_song_name.mp3
“01._Crystal_Castles_-_Untrust_Us.mp3
我想知道您对此事的看法”。
答案1
从技术上讲,唯一明确禁止的字符是/
和\0
(NUL
字节),因为它们具有特殊含义。
然而,为了方便起见,人们倾向于使用一些约定。例如,您注意到人们不喜欢使用空格而是使用_
。这是因为空格是 *nix 命令行上的单词分隔符。因此,如果您在文件名中使用空格,则必须引用文件名或转义每个空格(使用\
)才能将名称正确识别为单个实体。虽然你能在文件名中使用空格,额外的努力阻止了许多人这样做。
此外,(有些人)避免使用大写字母,可能是因为输入这些文件名需要花费更多的精力 - 毕竟,按下Shift是非常困难的!
你的问题“什么是最好的惯例?”很难回答;与许多问题一样,在 *nix 下,最好的解决方案最适合你。
就我个人而言,我将音频文件保存在文件层次结构 ( ~/Music/<Artist>/<Album>/
) 中,每个轨道名称如下所示:## - <Track Name>.ext
。
答案2
大小写
大写、小写和混合大小写都适合文件名。如果某些用户偏爱小写名称,那只是因为输入小写字母速度更快。
空间
文件名中可以有空格,但有一点需要注意:在编写 shell 脚本时,此类文件名需要更加小心。关于这个主题的基本教程是这里。
冒号
:
应避免使用冒号 ( )。这是因为,当将文件从一台计算机移动到另一台计算机时,使用诸如 之类的实用程序scp
将计算机名称和文件名以 的形式组合起来是一种常见的约定machinename:filename
。因此,如果您的文件名有冒号,可能会导致混乱。斜线
您不能使用
/
该字符,因为该字符用于分隔目录名称,就像\
在 Microsoft 系统上使用的那样。如果您想自由地来回传输文件,您可能应该避免这两种情况。可移植性
许多 mp3 播放器使用旧式 Microsoft VFAT 文件系统。在这些文件系统上,
:
、\
、*
、 和?
均被禁止。如果您要将文件传输到此类文件系统,最好也避免使用这些字符。
答案3
大小写 - 注意
*nix 上的常见文件系统(如操作系统)允许
ThisFile
和thisfile
存在于同一文件夹中。这是不可能的,例如在 vfat 或 ntfs 文件系统(以及相当多的其他旧文件系统)上。
答案4
最重要的是匹配现有的模式并坚持下去。无需浪费时间仔细思考即可找到答案。我明白我回答这个问题的讽刺意味;
苹果紧随其后/Library/Extensions/SomeExtension.file
,所以我也像这样设置了我的工作目录:Projects/Client/Project/thing.extension
顺便说一句,我所做的前端开发工作也遵循 JS 和namingLikeThis.js
CSS的逻辑something-like-this.css
- 在我的项目中混合约定,但不遵循整个技术。我询问了 Bootstrap 的创建者@胖的和@mdo不久前,他们的方法很好。我采纳了它,再也没有认真思考过它。
这有点奇怪,但用一个合理的答案解决了这个难题,这样我就可以更少地思考或辩论来开始工作。