題 如何從終端找到Mac OS X版本?


我知道如何從GUI中找到Mac OS X版本: Apple Menu (top left) > About This Mac

是否有終端命令會告訴我Mac OS X版本?


137
2017-11-25 12:48


起源




答案:


你有幾個選擇:

sw_vers -productVersion 

system_profiler SPSoftwareDataType

要么做你需要的,要有一個可解析的輸出格式(如果這就是你所追求的)。


197
2017-11-25 14:13



sw_vers就是我所需要的。謝謝! :) - Željko Filipin
第一個只給你OS版本(即“10.7.5”)。第二個為您提供了許多其他信息,如32/64位。 - Kent
好一個!我正在尋找 lsb_release 或類似的規定。永遠不會發現那些腳本。 :d - Alastair


命令 sw_vers 顯示版本。

對於較舊的Mac OS,您可以在中找到有用的信息 維基百科


7
2018-02-16 21:28





如果你關心的只是主要版本(10.10,10.9),你可以做到

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

我在幾個腳本中使用它,如果在10.8.x,10.9.x和現在10.10上運行,則必須執行不同的操作。


4
2017-10-20 19:59



更簡單: sw_vers -productVersion | cut -d '.' -f 1,2 - waldyrious


如果您希望基於腳本邏輯的語義版本控制拆分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

2
2017-10-14 02:07