2016-11-04 254 views

回答

1
function unxip() 
{ 
    [ -z "$1" ] && echo "usage: unxip /path/to/archive.xip" && return 

    # http://newosxbook.com/src.jl?tree=listings&file=pbzx.c 
    PBZX="/usr/local/src/pbzx/pbzx" && [ ! -x "$PBZX" ] && echo "$PBZX not found." && return 

    [ ! -f "$1" ] && echo "$1 not found." && return 

    [ -f "Content" ] || [ -f "Metadata" ] && echo "Content or Metadata already exists." && return 

    pkgutil --check-signature "$1" && xar -xf "$1" && "$PBZX" Content | sudo tar x --strip-components=1 

    rm "Content" "Metadata" 
} 

我們首先檢查xip文件簽名,然後使用xar提取其內容。然後,我們使用Jonathan Levin pbzx正確解壓pbzx塊,並將輸出管道輸入到tar,跳過.以避免覆蓋當前工作目錄權限。

這是一個竅門,可以在OS X El Capitan上解壓Xcode8.xip檔案。

+0

從CI的角度來看,這是不可取的,因爲當系統上已安裝本地工具(/ System/Library/CoreServices/Applications/Archive Utility.app/Contents/MacOS/Archive Utility)時,它需要安裝第三方應用程序執行工作。 – ablarg

1

你可以只運行:

open archive.xip 
2

open -W archive.xip將更好地工作,因爲它會再阻塞,直到歸檔完成開放。