2013-11-02 73 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替換了我正在使用的文件名。 –

相關問題