2013-11-02 72 views
0

我试图在gzip上制作压缩器和解压缩器。在加入我的逻辑后,我的压缩机我PAX文件,然后压缩的结果,并将其保存为*名为.abc使用Shell脚本的解压缩器

pax -w $allfiles > $paxfile 

gzip $paxfile > $zippedfile 

在解我必须解压缩它开始,因为解压不起作用的*名为.abc我将文件重命名为file.gz,然后将结果存储在file.pax中。我试图pax读它然后..我卡在这里

i=$(echo $filename | cut -d'.' -f1) 
echo $i 
ip=$i.gz 
mv "$filename" "$ip" 
op=$i.pax 

gunzip -f < $ip > $op | pax -r 

请帮助。我对做错什么是无知的。我得到的错误是

pax: End of archive volume 1 reached 
ATTENTION! pax archive volume change required. 
Ready for archive volume: 1 
Input archive name or "." to quit pax. 
Archive name > 

我做错了什么,而pax -r?

回答

0

Hi Wel我解决了我的问题。文件名和扩展名有问题。我没有提取它们并正确传达给* .gz。我改变并修改了那些,所以现在我解压缩正确的文件,然后通过管道读取pax文件。

0

你可以避免创建中间文件,并实现你想要的(我猜)以下。

压缩:

pax -w $allfiles | gzip - > $zippedfile 

与 “ - ” 代表“从标准输入(即,管)读

然后解压缩:

gunzip -c -d $ip | pax -r 

与“-c”表示“写入标准输出”,“-d”表示“解压缩”(可能不需要)

+0

流水线只是紧固过程。不会删除错误。虽然 –

+0

谢谢,但是当输入gunzip文件不存在时,我会得到同样的错误。注意:我编辑了我的答案,用您的$ ip替换了我正在使用的文件名。 –

相关问题