最近研究shell編程,需要下載解壓一些.tar.gz的文件,但經常遇到解壓失敗的情況:
[root@xxxxxxx ~]# tar -jxvf tcl8.4.16-src.tar.gz bzip2: (stdin) is not a bzip2 file. tar: Child returned status 2 tar: Error is not recoverable: exiting now
今天仔細研究了一下,如何解決這個問題:
1. 先查看文件真正的屬性是什么?
[root@xxxxx ~]# tar -zxvf tcl8.4.16-src.tar.gz gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now [root@xxxxxx ~]# file tcl8.4.16-src.tar.gz tcl8.4.16-src.tar.gz: HTML document text
我賽,竟然是HTML,這次終於知道是為什么了。
理由如下:
文件的下載鏈接不是直接指向文件,而是先指向一個頁面,在這個頁面里才是真的下載鏈接,所以在前一個頁面上直接保存文件,實際上保存的是一個頁面。
假如屬性是bz文件,就用bz文件的解壓方式。
補充一下file命令:
通過file指令,我們得以辨識該文件的類型。
參 數:
-b 列出辨識結果時,不顯示文件名稱。
-c 詳細顯示指令執行過程,便於排錯或分析程序執行的情形。
-f<名稱文件> 指定名稱文件,其內容有一個或多個文件名稱呢感,讓file依序辨識這些文件,格式為每列一個文件名稱。
-L 直接顯示符號連接所指向的文件的類別。
-m<魔法數字文件> 指定魔法數字文件。
-v 顯示版本信息。
-z 嘗試去解讀壓縮文件的內容。
2.重新獲取tar包路徑,先用瀏覽器打開,從彈出來的save 對話框里獲取下載鏈接
這次就完美了!