有時我們明明已經使用gunzip命令解壓.gz文件了,可解壓生成的文件卻依然無法正常讀取。如輸入命令gunzip HelloWorld.java.gz后,解壓生成HelloWorld.java文件,卻無法正常使用vi命令進行編輯,打開看到一堆亂碼!這是為什么呢?

會出現這種情況,最主要的原因是:由於在linux系統中擴展名可有可無,部分朋友對書寫擴展名不是太在意,或者可能是在書寫過程中,一時大意,總之,就是書寫擴展名時不太規范。要知道,在linux系統中gzip解壓命令一般是不單獨使用的,而是被命令tar使用參數“z”來調用的。如:tar cvzf HelloWorld.tar.gz HelloWorld.*

大家可以看到這時生成的文件擴展名是.tar.gz,而很多小伙伴在書寫時很容易就直接寫成了.gz。這樣本來是需要使用tar zxvf命令來解壓的,卻被只用gunzip解壓,這就造成前面解壓后文件不能正常編輯的情況。

所以前面使用gunzip解壓生成的文件其實還不是普通文件,而是使用tar命令生成的一個包文件。這是我們還需繼續運行命令:tar xvf HelloWorld.java,可以看到tar解包后的文件就可以正常使用vi命令編輯了。

那么除了猜測,我們還有沒有什么好的方法來判斷一個文件究竟是什么類型的文件呢?有的,我們可以利用file命令來查看文件類型,從而進一步判斷該文件應該使用什么命令來處理。如前面的文件,我們可以運行下面的命令:
file HelloWorld.java
我們可以從輸出結果中看到:tar archive,它告訴我們這是一個tar包。這樣我們就知道該用tar xvf命令來解包了。大家弄明白了吧!

