Как узнать версию Mac OS X из терминала?


Ответы:


211

У вас есть несколько вариантов:

sw_vers -productVersion 

system_profiler SPSoftwareDataType

Любой из них будет делать то, что вам нужно, и будет иметь выходной формат, который можно разобрать (если это то, что вам нужно).


3
Первый только дает вам версию ОС (то есть, «10.7.5»). Второй дает вам много дополнительной информации, такой как 32/64-битный.
Кент

1
Хороший! Я собирался искать lsb_releaseили что-то в этом роде. Никогда бы не заметил эти сценарии. : D
Аластер


4

Если вам важна только основная версия (10.10, 10.9), вы можете сделать

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

Я использую это в паре скриптов, которые должны делать разные вещи, если работают на 10.8.x, 10.9.x и теперь 10.10.


3
Проще:sw_vers -productVersion | cut -d '.' -f 1,2
Валдириус

2

Если вы хотите разделить номер версии MacOS на основе семантического контроля версий для логики скрипта, вот небольшой фрагмент кода, который я использую

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

Вы можете использовать эти переменные в логике скрипта для запуска различных команд в зависимости от версии macOS. Это дает немного более детальный контроль вплоть до версии патча или сборки.

# 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.