Другие вопросы обсуждали, как получить числовое имя текущей версии OSX, то есть с помощью «sw_vers -productVersion». Тем не менее, я не знаю, как получить название животного, например, Лев, Маверикс и т.д.? Это слово не появляется в Apple / Об этом Mac.
3 ответа
Пока я искал решение этой проблемы, я наткнулся на это сообщение в блоге: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
для этой службы.
Названия животных предназначены только для маркетинговых целей. Запуск терминала и выполнение запросов приведут только к числовым ссылкам, так же как язык ограничен терминологией, основанной на Unix.
Я дам вам две альтернативы. Оба имеют (некоторые) недостатки, но они работают и отвечают на ваш вопрос.
Первое решение: создайте скрипт 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
Короче говоря: это можно сделать? Да Это надежно и не требует обслуживания? Нет