Câu hỏi Cách tìm phiên bản Mac OS X từ Terminal?


Tôi biết cách tìm phiên bản Mac OS X từ GUI: Apple Menu (top left) > About This Mac

Có một lệnh Terminal sẽ cho tôi biết phiên bản Mac OS X không?


136
2017-11-25 12:48


gốc




Các câu trả lời:


Bạn có một vài lựa chọn:

sw_vers -productVersion 

system_profiler SPSoftwareDataType

Hoặc sẽ làm những gì bạn cần, và sẽ có một định dạng đầu ra có thể phân tích cú pháp (nếu đó là những gì bạn đang theo dõi).


196
2017-11-25 14:13



sw_vers là tất cả những gì tôi cần. Cảm ơn! :) - Željko Filipin
Cái đầu tiên chỉ cung cấp cho bạn phiên bản hệ điều hành (ví dụ: "10.7.5"). Phần thứ hai cung cấp cho bạn nhiều thông tin bổ sung như 32/64-bit. - Kent
Đẹp nhất! Tôi đã đi tìm kiếm lsb_release Hoặc một cái gì đó dọc theo các đường dây. Không bao giờ có thể phát hiện ra những kịch bản đó. : D - Alastair


Lệnh sw_vers hiển thị phiên bản.

Đối với Mac OS cũ hơn, bạn có thể tìm thấy thông tin hữu ích trong Wikipedia.


7
2018-02-16 21:28





Nếu tất cả những gì bạn quan tâm là phiên bản chính (10.10, 10.9), bạn có thể làm

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

Tôi sử dụng điều này trong một vài kịch bản mà phải làm những việc khác nhau nếu chạy trên 10.8.x, 10.9.x và bây giờ 10.10.


4
2017-10-20 19:59



Đơn giản hơn: sw_vers -productVersion | cut -d '.' -f 1,2 - waldyrious


Nếu bạn đang tìm cách tách số phiên bản macOS dựa trên phiên bản ngữ nghĩa cho logic tập lệnh, dưới đây là một đoạn mã nhỏ tôi sử dụng

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

Bạn có thể sử dụng các biến này trong logic script để chạy các lệnh khác nhau dựa trên phiên bản của macOS. Điều này cho phép kiểm soát chi tiết hơn một chút xuống bản vá hoặc phiên bản xây dựng.

# 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