จะหาเวอร์ชั่น Mac OS X จาก Terminal ได้อย่างไร


150

ฉันรู้วิธีหาเวอร์ชั่น Mac OS X จาก GUI: Apple Menu (top left) > About This Mac

มีคำสั่ง Terminal ที่จะบอกเวอร์ชั่นของ Mac OS X หรือไม่?

คำตอบ:


211

คุณมีตัวเลือกน้อย:

sw_vers -productVersion 

system_profiler SPSoftwareDataType

ทั้งจะทำสิ่งที่คุณต้องการและจะมีรูปแบบผลลัพธ์ที่แยกได้ (ถ้านั่นคือสิ่งที่คุณหลัง)


3
อันแรกให้เวอร์ชั่น OS เท่านั้น (เช่น "10.7.5") ส่วนที่สองให้ข้อมูลเพิ่มเติมมากมายเช่น 32/64-bit
Kent

1
ทำได้ดีนี่! ฉันกำลังมองหาlsb_releaseหรือบางสิ่งบางอย่างตามสายเหล่านั้น จะไม่พบสคริปต์เหล่านั้น : D
Alastair

7

คำสั่งsw_versแสดงเวอร์ชัน

สำหรับ Mac OS เก่าของคุณสามารถหาข้อมูลที่เป็นประโยชน์ในวิกิพีเดีย


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
waldyrious

2

หากคุณต้องการแยกหมายเลขรุ่น macOS โดยอิงจากการกำหนดเวอร์ชันแบบ semantic สำหรับตรรกะของสคริปต์นี่คือตัวอย่างรหัสเล็ก ๆ ที่ฉันใช้

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.