Questão Como descobrir a versão do Mac OS X do Terminal?


Eu sei como encontrar a versão Mac OS X da GUI: Apple Menu (top left) > About This Mac

Existe um comando do Terminal que me diga a versão do Mac OS X?


136


origem




Respostas:


Você tem poucas opções:

sw_vers -productVersion 

system_profiler SPSoftwareDataType

Qualquer um fará o que você precisa e terá um formato de saída que seja analisável (se for o que você está procurando).


196



sw_vers é tudo que eu preciso. Obrigado! :) - Željko Filipin
O primeiro só lhe dá a versão do sistema operacional (ou seja, "10.7.5"). O segundo fornece muitas informações adicionais, como 32/64 bits. - Kent
Agradável! Eu estava procurando por lsb_release Ou algo nesse sentido. Nunca teria visto esses scripts. : D - Alastair


O comando sw_vers mostra a versão.

Para Mac OS mais antigos, você pode encontrar informações úteis em Wikipedia.


7





Se tudo o que importa é a versão principal (10.10, 10.9), você pode fazer

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

Eu uso isso em um par de scripts que tem que fazer coisas diferentes se executado em 10.8.x, 10.9.xe agora 10.10.


4



Mais simples: sw_vers -productVersion | cut -d '.' -f 1,2 - waldyrious


Se você está procurando dividir o número da versão do macOS com base na versão semântica para lógica de script, aqui está um pequeno recorte de código que eu uso

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

Você pode usar essas variáveis ​​na lógica do script para executar comandos diferentes com base na versão do macOS. Isso dá um controle ligeiramente mais granular ao patch ou à versão de compilação.

# 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

2