Jak znaleźć wersję Mac OS X z Terminalu?

150

Wiem, jak znaleźć wersję Mac OS X z GUI: Apple Menu (top left) > About This Mac

Czy istnieje polecenie terminalu, które powie mi wersję Mac OS X?

Željko Filipin
źródło

Odpowiedzi:

211

Masz kilka opcji:

sw_vers -productVersion 

system_profiler SPSoftwareDataType

Albo zrobi to, czego potrzebujesz, i będzie miał format wyjściowy, który można przeanalizować (jeśli o to ci chodzi).

delfuego
źródło
3
Pierwszy daje tylko wersję systemu operacyjnego (tzn. „10.7.5”). Drugi zawiera wiele dodatkowych informacji, takich jak 32/64-bit.
Kent
1
Niezłe! Szukałem lsb_releaseczegoś podobnego. Nigdy nie zauważyłbym tych skryptów. : D
Alastair
7

Polecenie sw_verspokazuje wersję.

W przypadku starszych systemów Mac OS przydatne informacje można znaleźć w Wikipedii .

EdmundsZ
źródło
4

Jeśli zależy Ci tylko na wersji głównej (10.10, 10.9), możesz to zrobić

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

Używam tego w kilku skryptach, które muszą robić różne rzeczy, jeśli są uruchamiane w wersjach 10.8.x, 10.9.xi teraz 10.10.

Joe Block
źródło
3
Prostsze:sw_vers -productVersion | cut -d '.' -f 1,2
waldyrious
2

Jeśli chcesz podzielić numer wersji systemu macOS na podstawie wersji semantycznej dla logiki skryptu, oto mały fragment kodu, którego używam

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

Tych zmiennych można użyć w logice skryptów do uruchamiania różnych poleceń w zależności od wersji systemu macOS. Daje to nieco bardziej szczegółową kontrolę aż do wersji łatki lub kompilacji.

# 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
źródło