是.yaml还是.yml?


336

根据yaml.org,官方文件扩展名为.yaml

引用:

YAML文件是否有官方扩展名?

请尽可能使用“ .yaml”。

但是,互联网上似乎在使用扩展名上存在分歧。如果您在网上查找示例,其中许多示例都使用未经批准的.yml扩展名。

搜索Google会返回较短结果的3倍。


在此处输入图片说明
49,100


在此处输入图片说明
15,400


那我应该使用哪个呢?创建者建议的适当的4个字母扩展名,还是在互联网狂野的西部发现的3个字母扩展名?


3
也许公众应该在这里抱怨并要求他们将官方建议更改为“ .yml”。组织(和创始人)自然可以“变慢”,但也许可以说服他们遵循实际用法(如果只是为了进一步传播这种语言)。
MarkDBlackwell '16

3
@AndrewWagner,如果他们将rec更改为.yml,那么人们可能会更改为.yaml:-)
go2null

4
yaml.org/faq.html- >使用.yaml
Wannes

6
我不确定yaml.org是否会提供很多帮助,因为它们仍然显示:© 2001-2006 YAML.org All Rights Reserved
肖恩

6
您现在正在使用.htm还是.html?如果您仍然坚持使用.htm,那么.yml可能是您的正确选择。否则,您可能最好习惯使用.yaml :-)
xorcus

Answers:


215

文件扩展的性质甚至存在与平台有关(请记住,有些晦涩的平台甚至没有它们)-在其他系统中,它们只是常规的(UNIX及其同类),而在另一些系统中,它们具有确定的语义以及在某些情况下对长度或字符内容的特定限制(Windows等)。

由于维护人员已要求您使用“ .yaml”,因此这与您可能获得的“官方”裁定非常接近,但很难摆脱8.3的习惯(而且,令人震惊的是,在2013年仍然如此)。


4
更糟糕的是我安装的Notepad ++似乎出错了:-(
Samuel Harmer

35
3个字母的后缀惯例已经过时了将近20年。如果有的话,我会认为90年代万维网已弃用它。任何人甚至都在乎这是令人反感的。足够了,这样我就可以针对任何因该软件而中断的软件提交错误报告。
戴夫

3
Wikipedia的Category:Filename_extensions页面列出了.a.o.z的条目。不知何故,它错过了.c和.h。这些单字母扩展名帮助我们看到扩展名应尽可能长,但不能再扩展(对半引号A. Einstein)。
MarkDBlackwell '16

19
我命名了文件.yml,您无能为力。
bvdb

4
@戴夫,我会记住您的宝贵意见。(将您的反馈保存到DOCUME~1.HTM
bvdb

31

编辑:

那我应该使用哪个呢?创建者建议的适当的4个字母扩展名,还是在互联网狂野的西部发现的3个字母扩展名?

这个问题可能是:

  1. 请求咨询;要么

  2. 体验到的那种特定情感的一种自然表达,同时观察到某些官方推荐被忽视了,甚至被忽视了,甚至被忽视了。

人们在以下方面的偏好不同:

  1. 官方建议;要么

  2. 实践的优势。

当然,关于您倾向于采用这两种方式中的哪一种,我不太可能影响您!

在随后的内容中(并本着科学精神),我仅作一个假设(实际上)是导致大多数人使用3字母扩展名的假设。而且,我专注于有效的原因。

因此,我不打算道德上的劝告。您可能还记得,事实确实存在,并不意味着它应该存在。

无论您的个人倾向是走一条路还是走另一条路,我都不反对。

(编辑结束。)

关于这种偏好(在现实生活中的用法)的建议是由8.3个字符的DOS限制引起的,IMO是一个红色鲱鱼(错误和误导)。

截至2016年8月,YML和YAML的Google搜索计数分别约为6,000,000和4,100,000(精确到两位数)。此外,“ YAML”计数不公平地很高,因为它除了使用作为扩展之外,还包括提及该语言的名称。

截至2018年7月,Google对YML和YAML的搜索量分别约为8,100,0004,100,000(再次达到两位数的精度)。因此,在过去的两年中,YML的受欢迎程度基本上翻了一番,但YAML保持不变。

另一种文化措施是试图解释文件扩展名的网站。例如,在FilExt网站(截至2018年7月)上,YAML的页面显示为:“糟糕!FILEXT.com数据库没有有关文件扩展名.YAML的任何信息。”

YML则有一个条目,该条目给出:“ YAML ...使用文本文件并将其组织为人类可读的格式。'database.yml'是Ruby on Rails使用YAML的典型示例。连接到数据库。”

截至2014年11月,维基百科关于扩展名YML的文章仍指出“ .yml”是“ YAML文件格式文件扩展名”(添加了重点)。其YAML文章列出了两个扩展名,但没有表达偏好。

扩展名“ .yml”足够清晰,简短(因此更易于键入和识别)并且更加常见。

当然,这两个扩展名都可以看作是可能的长扩展名“ .yamlaintmarkuplanguage”的缩写。但是程序员(和用户)不想输入所有这些内容!

相反,我们的程序员(和用户)希望尽可能少地键入内容,但仍要保持明确和清晰。而且,我们希望尽快读取文件类型,而无需阅读冗长的单词。输入多少个字符即可完成这两个目标?答案不是三(3)吗?换句话说,YML?

Wikipedia的Category:Filename_extensions页面列出了.a.o.Z的条目。不知何故,它错过了.c和.h(由C语言使用)。这些示例单字母扩展名帮助我们看到扩展名应尽可能长,但不能再长(半引号爱因斯坦)。

相反,请注意,通常,很少有扩展名以“ Y”开头。通常,另一方面,字母X具有多种含义,包括“叉”,“可扩展”,“极”,“变量”等(例如,在XML中)。因此,以“ Y”开头已经传达了很多信息(就信息论而言),而以“ X”开头却没有。

因此,从语言上来讲,首字母缩写词“ XML”仅(以某种方式)只有两个信息性字母(“ M”和“ L”)。相反,“ YML”具有三个提示性字母(“ M”,“ L”和“ Y”)。实际上,以Y开头的现有首字母缩略词集似乎很小。言外之意,这就是为什么四个字母的YAML文件扩展名被过度指定的原因。

也许这就是为什么我们在实践中看到将所讨论的缩写加长到四(4)个字符的“语言”压力(自然使用)是微弱的,而将这种缩写缩短到三(3)个字符的“语言”压力却很弱的原因。很强。

纯粹出于这些因素的结果(并非作为官方认可),我会注意到YAML.org网站的最新新闻(自2011年11月起)全部涉及一个用JavaScript编写的项目JS-YAML,它本身在内部更喜欢使用扩展名“ .yml”。

上述因素可能是主要因素;但是,所有因素(已知或未知)都导致缩写,三(3)个字符扩展成为YAML的主要用法之一,尽管发明人更喜欢。

“ .YML”似乎是事实上的标准。然而,对于世界上对人类可读数据语言的需求,同一位发明家也具有感知力和正确性。我们应该感谢他们的提供。


1
为YAML使用文件扩展名“ .yml”列出了许多具体示例,建议和默认情况下默认为“ .yml”的配置设置。
MarkDBlackwell'8

1
如果您引用Wikipedia,则最好阅读更多:Yaml的文章说文件扩展名:.yaml.yml
Charles Follet

1
@CharlesFollet,您引用的内容实际上是我的声明的基础,“其YAML文章列出了两个扩展名,没有任何偏见”(现在已编辑为“不表达首选项”)。人们使用两种扩展名;但“ .yml”占主导地位。
MarkDBlackwell'8

19
永远记住,维基百科是一个协作的百科全书。我编辑的YML消歧页,以反映它只是“ 一个共同的扩展名”,而不是“ 延伸”。
NiñoScript

2
领域专用语言YML (生成XML的标记)已经存在很多年了,甚至与YAML一样长。您的Google搜索计数未计数,很可能已计数了YML引用以及错误的YAML引用。YAML并不是规范过度,它使用适当的名称来防止混淆。
Anthon

4

在网上阅读了很多人对此的评论之后,我的第一反应是,这基本上是那些真正不重要的辩论之一。但是,我最初的兴趣是找到正确的格式,以便与文件命名惯例保持一致。

长话短说,YAML的创建者在说.yaml,但就我个人而言,我一直在做.yml。这对我来说更有意义。因此,我继续寻找确认的过程,很快我意识到docker .yml在各处都使用。我一直都在写docker-compose.yml文件,而您一直在看Kubernetes的文档 kubectl apply -f *.yaml...

因此,总而言之,两种格式显然都可以接受,如果您是另一种格式(例如,编写接收YAML文件作为输入的系统),则应该允许这两种格式。好像是另一个蛇案和骆驼案。


2
那么,什么更有意义,为您使用的YML领域特定语言(这已经有大概只要YAML)的.yl.ym.ml延伸?
Anthon

2

.yaml显然是官方扩展名,因为使用时某些应用程序会失败.yml。另一方面,我不熟悉使用YAML代码的任何应用程序,但是.yaml扩展失败。

我只是偶然发现了这一点,因为我习惯于使用.ymlAnsible和Docker Compose进行编写。出于习惯,我.yml在编写无提示失败的Netplan文件时使用了。我终于发现了我的错误。Netplan受欢迎的Ansible Galaxy角色的作者在他的代码中做出了相同的假设:

- name: Capturing Existing Configurations
  find:
    paths: /etc/netplan
    patterns: "*.yml,*.yaml"
  register: _netplan_configs

但是,任何带有.yml扩展名的文件都会被Netplan忽略,其方式与带有.bak扩展名的文件相同。由于Netplan非常安静,即使成功使用,也不会给出任何反馈,即使使用netplan apply --debug,这样的配置01-netcfg.yml也会在没有任何有意义的反馈的情况下静默失败。


0

叙述一下... Yaml是文件架构/类型,'。yml'是其文件扩展名,类似于文本文件,'。txt'是扩展名。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.