在计算中,“.bak”是文件扩展名,通常用于表示文件的备份副本。
UNIX 中的 .bak 文件除了将扩展名更改为 .bak 之外还有其他意义吗?
答案1
在 Unix 中,文件扩展名只是用作视觉提示,以便人们可以更轻松地识别对扩展名为 .xxx 或 .yyy 的给定类型文件使用什么应用程序。
就操作系统而言,扩展没有真正的目的,相反,内核可能会对其所关心的文件使用文件签名,例如 shebang #!
,但除此之外,它相当不关心文件十六进制签名。
笔记:关于十六进制签名,它们是每个文件开头的前缀(十六进制)。请参阅这篇维基百科文章,标题为:文件签名列表举一些例子。
这些前缀有时也称为幻数 -幻数定义。
幻数是嵌入在开头或开头附近的数字文件指示其文件格式(即文件的类型)。有时也称为文件签名。
幻数通常对用户不可见。然而,使用十六进制编辑器,这是一个专门的程序显示并允许修改每个字节在一个文件中。
对于常见的文件格式,数字方便地表示文件类型的名称。因此,例如,符合广泛使用的 GIF87a 格式的图像文件的幻数十六进制(即基数 16)项为 0x474946383761,转换为ASCII码是 GIF87a。 ASCII 是事实上的标准被使用过电脑和用于字符编码的通信设备(即关联字母的和别的人物带数字)。
例子
这里我使用hexdump
命令来查看文件头。
$ hexdump -C simplelock.jpg | head -1
00000000 ff d8 ff e0 00 10 4a 46 49 46 00 01 02 00 00 64 |......JFIF.....d|
广州 - 1f 8b
$ hexdump -C rdjpgcom.1.gz | head -1
00000000 1f 8b 08 00 00 00 00 00 02 03 65 55 c1 72 22 37 |..........eU.r"7|
笔记:有关操作系统如何根据这些幻数和十六进制签名确定文件类型的更多信息,请参阅标题为的 U&L Q&A:如果不通过文件后缀如何知道文件类型?其中解释了命令行工具的file
工作原理以及它用于识别文件类型的过程。
文件签名的实际应用
Unix 中使用的签名机制确实是尽力而为。跟踪关联的工作依赖于一组相当古老的模式,这些模式是随着时间的推移而开发和建立的,用于识别文件的类型。它并不完美,因此了解哪个文件与哪个应用程序对应的责任主要留给用户作为练习。
参考
答案2
不,这只是一个约定。具有此类扩展名的文件的内容没有标准化。它是帮助人类用户识别不应删除这些文件的助记符。很多时候发生这种情况是因为它的内容很难理解,正如前面提到的缺乏定义的结构。