我想解壓一個.tgz文件並跳轉到發佈的目錄。我知道在終端的命令是:如何在shell腳本中跳轉解壓目錄?
tar -xvzf xxx.tgz
,然後跳轉到direcotory:
cd xxx
但我怎麼能做到這一點的shell腳本?我不知道如何獲得釋放'tar'命令的目錄,任何人都可以幫助我?
我想解壓一個.tgz文件並跳轉到發佈的目錄。我知道在終端的命令是:如何在shell腳本中跳轉解壓目錄?
tar -xvzf xxx.tgz
,然後跳轉到direcotory:
cd xxx
但我怎麼能做到這一點的shell腳本?我不知道如何獲得釋放'tar'命令的目錄,任何人都可以幫助我?
如前所述here:
test1=$(tar -axvf something-1.3.5a.tar.gz)
cd $(echo $test1 | cut -f1 -d" ")
下將解除存檔xxx.tgz
和cd
到哪個目錄它提取到:
tar -xvzf xxx.tgz && cd $(tar -tf ${_} | head -1 | cut -d/-f 1)
這需要一點考慮在內,該目錄將存檔提取到可能與檔案名稱不同。該方法提取檔案,然後檢查其內容,以確定它實際提取到的位置。有一定程度的脆弱性需要注意,並且可能需要對不尋常的文件名進行調整。
這裏有一對夫婦的其他(較籠統的)例子:
mkdir -p xxx && tar -xvzf ${_}.tgz -C ${_%%.tgz}
將創建目錄xxx
和xxx
提取xxx.tgz
即使正常提取到xyz
。
tar -xvzf xxx.tgz && cd ${_%%.tgz}
解檔xxx.tgz
然後使用bash的參數替換到cd
到xxx
目錄。
這假定tar文件名的前綴與所有文件被提取的目錄相同。這是一個非常普遍的慣例,但不能保證。話雖如此,它將適用於很多情況,所以對於請求者所需要的內容來說可能就足夠了。 – sheltond
任何你可以輸入一個終端將在shell腳本工作,所以你的腳本無非是把文件中的這兩個命令並執行它 – arco444
但在終端,我得到的目錄名稱手動和「CD」,以更,在腳本中我不知道如何獲取目錄名稱。 – geekzhu
解壓縮tar,gz後的目錄名是相同的,例如。除非另有說明,'xxx.tar.gz'解包成xxx。 – vish4071