为什么tar和gzip文件通常具有文件扩展名?


8

文件扩展名是没有必要的Unix系统,还是每柏油,gzip压缩或bzip2压缩的文件,我遇到了一个文件扩展名状.tar.tar.gz.tgz

有什么特殊的原因还是仅仅是约定?

Answers:


17

最初,在UNIX系统上,文件名的扩展名是约定俗成的问题。他们允许人们选择正确的程序来打开文件。现代惯例是在大多数情况下使用扩展名。常见的例外是:

  • 只有常规文件具有扩展名,而没有目录或设备名称。仅是目录或设备的事实就足以表明文件类型。
  • 旨在直接调用的可执行文件没有扩展名。对于用户来说,可执行文件是足够的信息,内核并不关心文件名。
  • 在全部大写单词开头的文件通常是文本文件,例如READMETODO。有时是表明一个子类别,如附加部件INSTALL.linuxINSTALL.solaris
  • 文件名称以一个点是一个特定的应用程序的配置或状态文件,而且往往不具有扩展名,例如.bashrc.profile.emacs
  • 有一些传统情况,例如Makefile

(这些是常见情况,不是一成不变的规则。)

大多数二进制文件格式还包含描述文件属性的某种标头,并且通常允许通过魔术数字标识文件格式。该file命令查看此信息并向您显示其猜测。

有时文件扩展名提供的信息比文件格式更多,有时反之亦然。例如,许多文件格式由zip归档文件组成:Java库(.jar),OpenOffice文档(.odt,…),Microsoft Office文档(.docx,…)等。另一个示例是源代码文件,其中扩展名表示编程语言,可以计算机很难从文件内容中自动猜测。相反,有些扩展名是模棱两可的,例如.o用于已编译的代码文件(目标文件),但是对文件内容的检查通常可以轻松地揭示目标文件的机器类型和操作系统。

该扩展名的一个优点是,与打开文件并查找魔术序列相比,识别它要快得多。例如,shell中文件名的完成几乎总是基于名称(主要是扩展名),因为读取大目录中的每个文件可能会花费很长时间,而仅读取文件名就足够快Tab按新闻了。

有时,当两种文件格式几乎相同但又不完全相同时,更改文件的扩展名可以使您说出如何解释文件。例如,一个Web服务器可能会将.shtml.html不同,前者发生一些服务器端预处理,后者担任原样。

采用gzip档案的情况下,gzip不会再压缩文件以谁的名义结束.gz.tgz以及一些其他的扩展。这样,您可以运行gzip *来压缩目录中的每个文件,并且不会修改已压缩的文件。


1
有时还会给包含守护程序脚本的目录提供.d扩展名,例如init.d,cron.d等。–
Lie Ryan

8

它们可能不需要扩展,但可以确保在输出中更容易识别它们ls


2
究竟。通常,没有标记为“请握住我的手” tar,因此您必须告诉它您拥有哪种存档。
凯文·坎图

3

文件扩展名主要是使用该系统的人们的约定。有些工具确实使用文件扩展名来执行操作。例如,Nautilus根据文件扩展名显示了一个不同的图标。

如果我给您提供了一个名为的文件file,您可能不知道如何打开该文件。但是,如果我给您一个名为的文件file.tar.gzfile.tar您可以快速轻松地找出来。


5
Nautilus不仅使用文件扩展名来确定文件类型。没有扩展名的tar.gz文件通常仍会带有花哨的符号。
史蒂文D
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.