用Unix Shell實現自解壓的tar檔案

來源:互聯網
上載者:User

 Windows下存在一些可以自行解壓的檔案,也就是所謂的自解壓檔案。使用者不用知道具體是採用哪種壓縮技術進行壓縮,即可僅通過運行該自解壓檔案實現對檔案的解壓。

但在Unix/Linux系統中,卻沒有一種方法可以達成這樣的目的。今天突然想用Unix Shell嘗試實現自解壓,經過嘗試,不是很難,也不需要高深的技術,就可以輕鬆達成這個目的。

主要的思路和Windows下的自解壓檔案思路一致,就是在現有的壓縮檔上加上一個檔案頭,該檔案頭可直接執行,執行步驟大致如下:

  1. 將該檔案後續的壓縮包的內容提取出來,放到一個臨時檔案中;
  2. 解壓該臨時檔案;
  3. 刪除該臨時檔案;
  4. 退出。

因此,只需要寫一個指令碼程式,在每個需要解壓的檔案頭上增加這部分內容即可。

以下是針對tar檔案添加解包檔案頭的Shell指令碼(extend.sh):

# !/bin/sh

[ $# != "1" ] && echo "Usage: extend.sh tarfile" && exit 0

FILENAME="$1.sh"
echo "# !/bin/sh" > $FILENAME
echo "LINES=\`wc -l \$0 | awk '{ print \$1 }'\`" >> $FILENAME
echo "LINES=\`expr \$LINES - 6\`" >> $FILENAME
echo "tail -n \$LINES \$0 > _TEMP_.tar " >> $FILENAME
echo "tar xvf _TEMP_.tar" >> $FILENAME
echo "rm _TEMP_.tar" >> $FILENAME
echo "exit 0" >> $FILENAME

chmod +x $FILENAME
cat $1 >> $FILENAME

 

具體使用方法是:extend.sh tarfile,使用該命令後,在目前的目錄下產生一個sh檔案。該檔案就是tarfile的自解壓檔案。

如果看不懂以上的Shell指令碼,可以先看看“測試編程”欄目中的Unix Shell編程入門部分。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.