Answers:
最初,在UNIX系统上,文件名的扩展名是约定俗成的问题。他们允许人们选择正确的程序来打开文件。现代惯例是在大多数情况下使用扩展名。常见的例外是:
README
,TODO
。有时是表明一个子类别,如附加部件INSTALL.linux
,INSTALL.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 *
来压缩目录中的每个文件,并且不会修改已压缩的文件。
文件扩展名主要是使用该系统的人们的约定。有些工具确实使用文件扩展名来执行操作。例如,Nautilus根据文件扩展名显示了一个不同的图标。
如果我给您提供了一个名为的文件file
,您可能不知道如何打开该文件。但是,如果我给您一个名为的文件file.tar.gz
,file.tar
您可以快速轻松地找出来。