输入输出重定向UNIX
假设我有一个名为输入输出重定向UNIX,unix,gzip,pipe,tar,cat,Unix,Gzip,Pipe,Tar,Cat,假设我有一个名为package.tar.gz 那么我会: cat package.tar.gz|gzip-d|tar tvf- 它向我显示了tar存档中的文件列表 但是,如果我这样做: gzip-d package.tar.gz | tar tvf- 它说tar:这看起来不像tar归档文件 我不明白这是为什么。如果第一种情况下的gzip-d结果返回可以解释为tar存档的输出,为什么第二种情况下它不工作 我已经看到了,但我不认为这是我的案例中的tar问题,因为第一个命令有效…在我看来,第二个案例中
package.tar.gz
那么我会:
cat package.tar.gz|gzip-d|tar tvf-
它向我显示了tar存档中的文件列表
但是,如果我这样做:
gzip-d package.tar.gz | tar tvf-
它说tar:这看起来不像tar归档文件
我不明白这是为什么。如果第一种情况下的gzip-d
结果返回可以解释为tar存档的输出,为什么第二种情况下它不工作
我已经看到了,但我不认为这是我的案例中的tar问题,因为第一个命令有效…在我看来,第二个案例中您没有传递
-d
选项。从主页上
可以使用gzip将压缩文件还原为原始格式
-d或gunzip或zcat
最适合这种风格的可能是
zcat
,它听起来就是-gunzip+cat 这就是你想要做的吗
gunzip -c package.tar.gz | tar xvf -
或
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
。这是压缩程序的“标准”行为。基本上
gzip -d package.tar.gz
不会输出到标准输出,这
tar tvf -
期待。结果
gzip -d package.tar.gz
文件被解压是一个副作用。需要使用
gzip -dc package.tar.gz | tar tvf -
为了达到想要的效果。我想你错过了猫的部分哦,是的,第二个很有效!你为什么要用<尽管如此?gzip-d package.tar.gz本身工作得很好,但与管道结合使用不起作用。。。
gzip -dc package.tar.gz | tar tvf -