我正在尝试在gzip之上制作压缩器和解压缩器。添加逻辑后,在压缩器中我将文件打包,然后压缩结果并将其另存为* .abc

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期间我做错什么了吗?

最佳答案

您可以避免创建中间文件,并通过以下方式实现您想要的(我想)。

压缩:

pax -w $allfiles | gzip - > $zippedfile


从标准输入(即管道)读取的“-”代表“。”

然后解压缩:

gunzip -c -d $ip | pax -r


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

关于linux - 使用Shell脚本解压缩器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19747381/

10-15 01:27