Bagaimana cara mengetahui versi Mac OS X dari Terminal?

150

Saya tahu cara menemukan versi Mac OS X dari GUI: Apple Menu (top left) > About This Mac

Apakah ada perintah Terminal yang akan memberi tahu saya versi Mac OS X?

Željko Filipin
sumber

Jawaban:

211

Anda punya beberapa pilihan:

sw_vers -productVersion 

system_profiler SPSoftwareDataType

Entah akan melakukan apa yang Anda butuhkan, dan akan memiliki format output yang dapat diuraikan (jika itu yang Anda cari).

delfuego
sumber
3
Yang pertama hanya memberi Anda versi OS (yaitu, "10.7.5"). Yang kedua memberi Anda banyak informasi tambahan seperti 32/64-bit.
Kent
1
Yang bagus! Saya akan membuat mencari lsb_releaseatau sesuatu di sepanjang garis itu. Tidak akan pernah melihat skrip-skrip itu. : D
Alastair
7

Perintah sw_versmenunjukkan versi.

Untuk Mac OS lama Anda dapat menemukan informasi yang berguna di Wikipedia .

EdmundsZ
sumber
4

Jika yang Anda pedulikan adalah versi utama (10.10, 10.9), Anda dapat melakukannya

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

Saya menggunakan ini dalam beberapa skrip yang harus melakukan hal-hal yang berbeda jika dijalankan pada 10.8.x, 10.9.x dan sekarang 10.10.

Joe Block
sumber
3
Simpler:sw_vers -productVersion | cut -d '.' -f 1,2
waldyrious
2

Jika Anda mencari untuk membagi nomor versi macOS berdasarkan versi semantik untuk logika skrip, berikut adalah potongan kecil kode yang saya gunakan

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

Anda dapat menggunakan variabel-variabel ini dalam logika skrip untuk menjalankan perintah yang berbeda berdasarkan versi macOS. Ini memberikan kontrol granular sedikit lebih ke patch atau versi build.

# 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
tidak
sumber