说我有一个名为package.tar.gz
的文件
然后我做:
cat package.tar.gz | gzip -d | tar tvf -
它显示了我的tar档案中的文件列表。
但是,如果我这样做:
gzip -d package.tar.gz | tar tvf -
它说tar: This does not look like a tar archive
我不明白为什么会这样。如果第一种情况下gzip -d
的结果返回可以解释为tar存档的输出,为什么它在第二种情况下不起作用?
我见过Autotools - tar This does not look like a tar archive但是我不相信自从第一个命令起作用以来,tar就是一个问题...
答案 0 :(得分:1)
在我看来,你并没有在第二种情况下传递-d
选项。从联机帮助页,
使用gzip可以将压缩文件恢复为原始格式 -d或gunzip或zcat。
最适合这种风格的是zcat
这听起来像是什么 - gunzip + cat。
答案 1 :(得分:1)
GNU tar
将直接解压缩文件:
tar -xf package.tar.gz
它会自动检测要使用的解压缩程序(gzip
,bzip2
,xz
,lzip
等。
如果您的tar
无法处理解压缩,则gzip -cd
会解密为标准输出:
gzip -cd package.tar.gz | tar -xf -
-c
选项意味着从标准输入读取或写入标准输出(在这种情况下,写入); -d
选项意味着解密。您也可以使用gunzip -c
代替gzip -cd
。这是压缩程序的“标准”行为。
答案 2 :(得分:0)
这是你想要做的吗?
gunzip -c package.tar.gz | tar xvf -
或者
gzip -cd package.tar.gz | tar xvf -
答案 3 :(得分:0)
基本上,
gzip -d package.tar.gz
不会输出到标准输出,
tar tvf -
期望。
的结果gzip -d package.tar.gz
是文件解压缩为副作用。需要使用
gzip -dc package.tar.gz | tar tvf -
以获得理想的效果。