1

Другие вопросы обсуждали, как получить числовое имя текущей версии OSX, то есть с помощью «sw_vers -productVersion». Тем не менее, я не знаю, как получить название животного, например, Лев, Маверикс и т.д.? Это слово не появляется в Apple / Об этом Mac.

3 ответа3

2

Пока я искал решение этой проблемы, я наткнулся на это сообщение в блоге:https://erikberglund.github.io/2016/Apple_Product_Marketing_Name_Query/

В качестве краткого изложения поста в блоге (на случай, если он вообще исчезнет), у Apple есть веб-сервис, который вы можете запросить маркетинговое название macOS для версий 10.7+. Вы можете предоставить ему номер версии macOS, для которого вам нужно маркетинговое имя, и он вернет XML с маркетинговым именем.

curl -s "https://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 "https://support-sp.apple.com/sp/product?edid=$(sw_vers -productVersion)" |
xmllint --xpath '/root/configCode/text()' -

Обратите внимание, что по состоянию на ноябрь 2017 года Apple принудительно использовала https через http для этой службы.

1

Названия животных предназначены только для маркетинговых целей. Запуск терминала и выполнение запросов приведут только к числовым ссылкам, так же как язык ограничен терминологией, основанной на Unix.

1

Я дам вам две альтернативы. Оба имеют (некоторые) недостатки, но они работают и отвечают на ваш вопрос.

Первое решение: создайте скрипт bash, содержащий имена животных. Недостатком является то, что вы должны вручную добавить запись, если появится новая версия. Но это (только) раз в 2 года или около того.

#!/bin/bash
# Check if bahs supports arrays (only recently added)
test[0]='test' || (echo 'Failure: arrays not supported in this version of bash.' && exit 2)

versions=( "1.0" "10.0" "10.1" "10.2" "10.3" "10.4" "10.5" "10.6" "10.7" "10.8" "10.9" "10.10" )
animals=( "Hera" "Cheetah" "Puma" "Jaguar" "Panther" "Tiger" "Leopard" "Snow Leopard" "Lion" "Mountain Lion" "Mavericks" "Yosemite" )
length=${#versions[@]}
thisversion=`sw_vers | grep -E "ProductVersion" | grep -o '[0-9]*\.[0-9]*' | head -1`
count=0

while [ "${versions[count]}" != "$thisversion" ] && [ "$count" -le "$length" ]
do
    count=$(( $count + 1 ))
done

echo "Your OS X's version animal name is : ${animals[count]}"

Второе решение: попытайтесь использовать информацию, которая есть в Википедии, и подделать сценарий, состоящий из одной строки, который получает имя животного. Вам понадобится рабочая версия grep, curl, html2text (я установил ее с помощью brew), sw_vers, head и awk. Вот ее королевская злобность:

curl -s http://en.wikipedia.org/wiki/OS_X | html2text -nobs -ascii | grep -E '^(Mac_)?OS_X. [0-9] {4}. '| grep -f <(sw_vers | grep "ProductVersion" | grep -o '[0-9] . [0-9] ' | head -1) | awk '{print $ 2}'

Небольшое объяснение:

  • Получить страницу Википедии, используя curl
  • Преобразуйте его в ascii, используя html2text
  • Изолируйте таблицу с версией OS X со страницы Википедии, используя grep
  • Затем создайте таблицу с версией OS X, которую вы используете.
  • Ваша версия OS X поставляется с sw_vers, который дважды Grep ред и глава ред изолировать 2-значный номер версии
  • Наконец, но не в последнюю очередь, показан второй столбец таблицы Википедии (будем надеяться, что они хранят имена животных в этом столбце), используя awk

Короче говоря: это можно сделать? Да Это надежно и не требует обслуживания? Нет

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .