¿Cómo encontrar la versión de Mac OS X desde Terminal?

150

Sé cómo encontrar la versión de Mac OS X desde la GUI: Apple Menu (top left) > About This Mac

¿Hay un comando de Terminal que me dirá la versión de Mac OS X?

Željko Filipin
fuente

Respuestas:

211

Tienes pocas opciones:

sw_vers -productVersion 

system_profiler SPSoftwareDataType

Cualquiera de los dos hará lo que necesite y tendrá un formato de salida que se pueda analizar (si eso es lo que busca).

delfuego
fuente
3
El primero solo te da la versión del sistema operativo (es decir, "10.7.5"). El segundo le brinda mucha información adicional, como 32/64 bits.
Kent
1
¡Buena esa! Me hicieron buscar lsb_releaseo algo por el estilo. Nunca habría visto esos guiones. : D
Alastair
7

El comando sw_versmuestra la versión.

Para Mac OS anteriores, puede encontrar información útil en Wikipedia .

EdmundsZ
fuente
4

Si lo único que le importa es la versión principal (10.10, 10.9), puede hacer

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

Lo uso en un par de scripts que tienen que hacer cosas diferentes si se ejecutan en 10.8.x, 10.9.xy ahora 10.10.

Joe Block
fuente
3
Más simple:sw_vers -productVersion | cut -d '.' -f 1,2
waldyrious
2

Si está buscando dividir el número de versión de macOS basado en versiones semánticas para la lógica del script, aquí hay un pequeño fragmento de código que 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

Puede usar estas variables en la lógica del script para ejecutar diferentes comandos según la versión de macOS. Esto proporciona un control ligeramente más granular hasta el parche o la versión de compilación.

# 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
fuente