Answers:
UNIX / Linux与Windows没有早期的DOS / CP / M传统。因此,扩展对于大多数UNIX实用程序和工具通常意义不大。
我通常使用仅命令行环境。在Linux下这种环境下的扩展并不是真正重要的事情,只是给操作员或用户带来方便。(我对KDE或GNOME的经验不足,无法知道他们的文件管理器如何处理扩展。)
但是这种便利通常很重要。如果config.ini
确实是Microsoft标准的“ .ini”格式,我会让扩展名保持不变。普通的旧文本文件在Linux中通常不带扩展名,但这并不是所有程序配置文件都通用的。程序员通常可以决定这一点。
我想如果要强调“ .txt”不是配置文件或其他机器可读文档,则在Linux下非常有用。但是,在源代码发行版中,惯例是将此类文件命名为全大写而不加扩展名(例如,README,INSTALL,COPYING等)。
有一些标准和约定,但是没有什么阻止您命名任何您想要的东西,除非您与他人共享东西。
在Windows中,给文件命名.exe
(通常是explorer.exe
)向Shell 表示它是一个可执行文件。UNIX将这些知识构建到文件系统的权限中。如果设置了适当的x
位(请参阅参考资料man chmod
),则外壳程序和内核函数会将其识别为可执行文件(我相信)。除此之外,Linux不在乎,大多数shell不在乎,并且大多数程序会在文件中查找其“类型”。
当然,有一个不错的命令file
可以分析文件并确定地告诉您文件的内容。我相信,如果它不能与任何已知类型的文件中的数据匹配,并且如果它仅包含可打印的ASCII / Unicode字符,那么它将假定其为文本文件。
下面的@Bruce Ediger是绝对正确的。在内核或文件系统级别,即Linux本身,没有任何内容强制或关心文件的内容需要与其名称或应理解的程序相匹配。这并不意味着无法创建Shell或启动器实用程序来基于文件名执行操作。
与Windows不同,在UNIX系统中,文件类型不是由扩展名决定的。文件扩展名是并且过去只是人类的视觉指示器。您可以命名JPEG foo.c并在Gimp中打开它。与Windows的另一个对比是,在UNIX系统上,您必须使用完整的文件名,而Windows经常会为您处理文件名(例如,仅运行explorer
vs explorer.exe
)。在UNIX上foo.sh
必须称为foo.sh
,而不是简单地称为foo
。
按照惯例,人们倾向于使用一组通用的扩展名。这种做法虽然不必要,但可能对整个人类有益。
This practice…is probably beneficial for humanity at large
您可能需要阅读Unix文件系统简介。
有几个很好的答案。我想进一步回答原始问题的一部分:“有关Linux如何处理文件扩展名的任何常规资源都将很有用。”
可以注册扩展名,以便Linux始终使用某些程序打开某些扩展名。这个设施叫做 binfmt。
binfmt_misc是Linux内核的一项功能,该功能允许识别任意可执行文件格式并将其传递给某些用户空间应用程序,例如模拟器和虚拟机。可执行格式是通过专用文件系统接口(类似于/ proc)注册的。基于Debian的发行版通过额外的binfmt-support软件包提供了功能。
每种格式在/ proc / sys / fs / binfmt_misc目录中都有一个对应的文件条目,可以读取该文件条目以获取有关给定文件格式的信息。
.txt可以通过不同的应用程序打开。但重要的是它用于将文件分类为某种类型。您可以看到我们是否使用.html保存了同一文件,但该文件尝试在Internet Explorer中打开。相应地制作了应用程序以支持此类文件类型。如果在上面使用.html,则编译器将尝试在其中查找html属性并相应显示结果。与其他扩展名相同。.ini文件可以读取为文本,但扩展名将其分类为配置文件,因此编译器将其视为配置文件,而不是普通的文本文件,因为该文本文件仅是一组记录,并且不具有的特定功能。 ini.h因此您不想将ini的扩展名更改为text