Получить кодовое имя OSX из командной строки
Есть ли способ получить кодовое имя OSX (Ie Yosemite, El Capitan и т. Д.) Из командной строки? Я не ищу информацию о версии (например,
sw_vers -productVersion
), который дает 10.10 и т.д. Спасибо!
- Команда удаления пароля Keychain
- Установка только Linux на Mac и на случай, вернитесь к macOS
- Невозможно использовать почтовые защищенные порты
- Автоматически отключать расширения Linux для Samba mounts
- rm -rf ~ / .Trash / * не работает, Mail Attachment.eml: OECustomProperty не может удалить
- Как узнать коды клавиш для клавиш Ctrl + вверх и вниз для экрана TERM =?
- Не может заставить Dnsmasq работать в Сьерре (для местного развития)
- используя команду dd для папки, но удаленные элементы не отображаются удалены
- Откуда появляется Mac OS X?
- настроить mysql с помощью django
- Как заставить bash поставить подсказку на новую строку после команды cat?
- Что делает UniqueID для Mac OS X?
- Игнорировать определенные символы при сравнении переменных?
3 Solutions collect form web for “Получить кодовое имя OSX из командной строки”
Я уверен, что должен быть более простой и надежный способ, но, по крайней мере, вы можете полностью исключить этот канал, используя grep
с -o
(только для распечаток) и -E
(расширенные регулярные выражения):
grep -oE 'SOFTWARE LICENSE AGREEMENT FOR OS X.*[AZ]' '/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf'
Это, однако, также возвращает SOFTWARE LICENSE AGREEMENT FOR OS X
часть вывода. Если вы просто хотите кодовое имя, вы можете передать его в sed, но не потребует каких-либо обратных ссылок, используя флаг страшного -E
который BSD sed
настолько печально известен:
grep -oE 'SOFTWARE LICENSE AGREEMENT FOR OS X.*[AZ]' '/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.*[AZ]' '/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-процессам, но я не профессионал.)
FWIW, вот неуклюжий хакерский путь; это, вероятно, не очень-то наоборот:
grep "SOFTWARE LICENSE AGREEMENT FOR OS X" \ "/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf" \ | sed -E 's/^SOFTWARE LICENSE AGREEMENT FOR OS X (.+)\\$/\1/'
Он работает, по крайней мере, на системах El Capitan и Mavericks, которые я проверил (и поэтому я бы взял на себя Йосемити). Он возвращает маркетинговое имя во всех кепках; например, EL CAPITAN
и EL CAPITAN
.
Из этого сообщения в блоге я узнал, что у Apple есть веб-сервис, на который вы можете запросить маркетинговое имя macOS для версий 10.7+. Вы можете предоставить его с номером версии macOS, для которого требуется маркетинговое имя, и оно вернет XML с маркетинговым именем.
curl -s http://support-sp.apple.com/sp/product?edid=10.12.6
Возвращает (отформатирован для отображения)
<?xml version="1.0" encoding="utf-8" ?> <root> <name>CPU Name</name> <configCode>macOS Sierra</configCode> <locale>en_US</locale> </root>
Если вы хотите получить маркетинговое имя для версии macOS, которую вы сейчас используете, вы можете запустить один лайнер
curl -s http://support-sp.apple.com/sp/product?edid=$(sw_vers -productVersion) | xmllint --xpath '/root/configCode/text()' -
- Копирование файлов NFS Linux на стандартный внешний жесткий диск пользователя
- RHEL5 – RHEL6 Обновление