Osx
從命令行獲取 OSX 代號
有沒有辦法從命令行獲取 OSX 代號(即 Yosemite、El Capitan 等)?我不是在尋找版本資訊(例如
sw_vers -productVersion
) 這給了 10.10 等謝謝!
我確信必須有一種更簡單、更可靠的方法,但至少您可以
sed
通過使用grep
with-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 程序,但我不是專業人士。)