Comment connaître la version Mac OS X depuis Terminal?

150

Je sais comment trouver la version Mac OS X à partir de l'interface graphique: Apple Menu (top left) > About This Mac

Existe-t-il une commande Terminal qui me dira la version Mac OS X?

Željko Filipin
la source

Réponses:

211

Vous avez quelques options:

sw_vers -productVersion 

system_profiler SPSoftwareDataType

L'un ou l'autre fera ce dont vous avez besoin et aura un format de sortie analysable (si c'est ce que vous recherchez).

Delfuego
la source
3
Le premier ne vous donne que la version du système d'exploitation ("10.7.5"). La seconde vous donne beaucoup d’informations supplémentaires telles que 32/64-bit.
Kent
1
Joli! Je me suis mis à chercher lsb_releaseou quelque chose du genre. Jamais aurait repéré ces scripts. : D
Alastair
7

La commande sw_versaffiche la version.

Pour les anciens Mac OS, vous pouvez trouver des informations utiles dans Wikipedia .

EdmundsZ
la source
4

Si vous ne vous souciez que de la version majeure (10.10, 10.9), vous pouvez le faire.

MAJOR_MAC_VERSION=$(sw_vers -productVersion | awk -F '.' '{print $1 "." $2}')

J'utilise ceci dans quelques scripts qui doivent faire des choses différentes s'ils sont exécutés sur 10.8.x, 10.9.x et maintenant 10.10.

Joe Block
la source
3
Plus simple:sw_vers -productVersion | cut -d '.' -f 1,2
waldyrious
2

Si vous souhaitez fractionner le numéro de version de MacOS en fonction du versionnement sémantique de la logique de script, voici un extrait du code que j'utilise.

product_version=$(sw_vers -productVersion)
os_vers=( ${product_version//./ } )
os_vers_major="${os_vers[0]}"
os_vers_minor="${os_vers[1]}"
os_vers_patch="${os_vers[2]}"
os_vers_build=$(sw_vers -buildVersion)

# Sample semver output
echo "${os_vers_major}.${os_vers_minor}.${os_vers_patch}+${os_vers_build}"
# 10.12.6+16G29

Vous pouvez utiliser ces variables dans la logique de script pour exécuter différentes commandes basées sur la version de macOS. Cela donne un contrôle légèrement plus granulaire jusqu'à la version du correctif ou de la version.

# Sample bash code
if [[ ${os_vers_minor} -ge 11 ]]; then
    DMG_FORMAT=ULFO
elif [[ ${os_vers_minor} -ge 4 ]]; then
    DMG_FORMAT=UDBZ
else
    DMG_FORMAT=UDZO
fi
N8felton
la source