Получить кодовое имя OSX из командной строки

Есть ли способ получить кодовое имя OSX (Ie Yosemite, El Capitan и т. Д.) Из командной строки? Я не ищу информацию о версии (например,

sw_vers -productVersion 

), который дает 10.10 и т.д. Спасибо!

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()' - 
  • Реализация Cocoa API для Linux?
  • Перемещение скомпилированного ассемблерного кода в загрузочный сектор устройства USB
  • Почему внешний жесткий диск работает слишком медленно?
  • Как изменить программу «чтения» по умолчанию?
  • OS X El Capitan, systemstats: com.apple.telemetry.shutdown
  • Как я могу искать / просматривать в памяти какого-либо процесса?
  • Печать на Linux CUPS-принтер от Mac El Capitan - заполняет error_log и не печатает
  • SSH-туннелирование через межсетевой экран в кластер
  • rsync --update и symlink не скопировали самую последнюю версию
  • Запустить fgrep multicore mac os x
  • Как я могу получить команду tac в OS X?
  • Interesting Posts

    log rotate, почему создание нового журнала называется журналом rotate вместо log delete или log refresh

    Поиск файлов, имеющих подтвержденный дубликат в том же каталоге, рекурсивно

    Отображение дискового пространства, необходимого для обновления

    RHEL – экран входа в систему не отображается

    Что делает простаивающий процесс ЦП?

    Сеть: как они получают 127 подсетей?

    Нажатие на панель меню приложений Gtk убивает мышь

    Добавление постфикса при загрузке файлов с использованием CURL, если файл с таким именем уже существует

    Раздел «X» не начинается с границы физического сектора

    Печать содержимого системного буфера обмена в bash

    Есть ли разница между read, head -1 и sed 1q?

    вывести вывод cat в сценарий узла

    Команда запуска ключа Gnome-terminal linux mint

    Браузер Chromium не позволяет установить формат бумаги по умолчанию для «Печать в файл»,

    Добавить данные из нескольких файлов в новый файл, разделенные линией

    Linux и Unix - лучшая ОС в мире.