Osx

從命令行獲取 OSX 代號

  • March 25, 2019

有沒有辦法從命令行獲取 OSX 代號(即 Yosemite、El Capitan 等)?我不是在尋找版本資訊(例如

sw_vers -productVersion

) 這給了 10.10 等謝謝!

我確信必須有一種更簡單、更可靠的方法,但至少您可以sed通過使用grepwith -o(僅列印匹配項)和-E(擴展正則表達式)來完全消除管道:

grep -oE 'SOFTWARE LICENSE AGREEMENT FOR OS X.*[A-Z]' '/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf'

但是,這也會返回SOFTWARE LICENSE AGREEMENT FOR OS X輸出的一部分。如果您只需要代號,則可以將其通過管道傳遞給 sed,但它不需要使用BSD臭名昭著的可怕-E標誌進行任何反向引用:sed

grep -oE 'SOFTWARE LICENSE AGREEMENT FOR OS X.*[A-Z]' '/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf' | sed "s/SOFT.*OS X //"

就個人而言,我更喜歡這種awk方法:

grep -oE 'SOFTWARE LICENSE AGREEMENT FOR OS X.*[A-Z]' '/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf' | awk -F 'OS X ' '{print $NF}'

awk溶液:

awk '/SOFTWARE LICENSE AGREEMENT FOR OS X/' '/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf' | awk -F 'OS X ' '{print $NF}' | awk '{print substr($0, 0, length($0)-1)}'

(我確信有一種方法可以做到這一點,而無需通過管道連接到額外的 awk 程序,但我不是專業人士。)

引用自:https://unix.stackexchange.com/questions/234104