2016-11-04 1 views

Répondre

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" 
} 

Nous vérifions d'abord pour xip signature du fichier puis extraire son contenu en utilisant xar. Nous utilisons ensuite Jonathan Levin pbzx pour décompresser correctement pbzx morceaux et redirigez la sortie à tar, en sautant . pour éviter d'écraser les autorisations de répertoire de travail en cours.

Cela fait l'affaire pour décompresser Xcode8.xip archives sur OS X El Capitan.

+0

Ceci est indésirable d'un point de vue CI car il nécessite l'installation d'une application tierce partie lorsque les outils natifs (/ System/Library/CoreServices/Applications/Archive Utility.app/Contents/MacOS/Archive utilitaires) installés sur le système déjà effectuer le travail. – ablarg

1

Vous pourriez exécuter:

open archive.xip 
2

open -W archive.xip fonctionnera mieux, car il sera alors bloqué jusqu'à ce que l'archive a terminé l'ouverture.