每当我需要解压缩使用 Gzip 压缩的文件时,我需要使用.gz
扩展名重命名该文件,我尝试了其他压缩实用程序,例如zip, bzip2
它们似乎并不关心扩展名。为什么会出现这种情况Gzip
,仅仅检查幻数来识别文件类型或通过其他方式不是有用的吗?还是说这样做是有目的的?
答案1
据我了解,总体思路是你可以运行
gunzip *
它将使用文件扩展名作为第一个过滤器;如手册页中所述:
gunzip
在其命令行上获取文件列表,并将名称以.gz
、-gz
、.z
、-z
、 或_z
(忽略大小写)结尾且以正确的幻数开头的每个文件替换为不带原始扩展名的未压缩文件。gunzip
还识别特殊扩展名.tgz
and分别.taz
作为.tar.gz
和的简写.tar.Z
。压缩时,如有必要,gzip
请使用.tgz
扩展名,而不是截断带有扩展名的文件.tar
。
另一个显着的特点是gunzip
,它默认忽略压缩文件中存储的名称,并提取到一个通过将待解压文件中的后缀去掉而确定名称的文件;如果文件没有已知后缀,则无法执行此操作。
当然,在处理多个文件时,仅使用幻数进行过滤会产生类似的效果,但有一些区别:
gzip
当前用户无法读取的具有非扩展名的文件不一定会导致错误(但目前确实会导致错误,因为gunzip
即使不尝试解压缩也会打开文件);gzip
避免在每个文件中检查幻数的需要在实施时可以节省大量时间。
既然它以这种方式记录下来,就不能轻易改变(尽管维护者gzip
最近已经表明他们愿意在行为上引入重大改变,例如和gunzip -l
)。