![Могу ли я получить имя Animal для OSX из Терминала, а не только версию?](https://rvso.com/image/1419592/%D0%9C%D0%BE%D0%B3%D1%83%20%D0%BB%D0%B8%20%D1%8F%20%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%20%D0%B8%D0%BC%D1%8F%20Animal%20%D0%B4%D0%BB%D1%8F%20OSX%20%D0%B8%D0%B7%20%D0%A2%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D0%B0%2C%20%D0%B0%20%D0%BD%D0%B5%20%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E%3F.png)
Другие вопросы обсуждали, как получить числовое имя текущей версии OSX, т. е. с помощью "sw_vers -productVersion". Однако я не знаю способа получить имя животного, например, Lion, Mavericks и т. д. Это слово не появляется в Apple / Об этом Mac.
решение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]}"
Второе решение: попробуйте использовать информацию, которая есть наВикипедияи создайте однострочный скрипт bash, который получает имя животного. Вам понадобится рабочая версиягрэп,завиток,html2text(Я установил его с помощьюзаваривать),sw_vers,головаиawk. Вот ее королевская подлость:
завиток -сhttp://en.wikipedia.org/wiki/OS_X| html2text -nobs -ascii | grep -E '^(Mac_)?OS_X.[0-9]{4}.' | grep -f <( sw_vers | grep "ВерсияПродукта" | grep -o '[0-9].[0-9]' | голова -1 ) | awk '{ print $2 }'
Небольшое пояснение:
- Получить страницу Википедии с помощьюзавиток
- Конвертируйте его в ascii с помощьюhtml2text
- Изолируйте таблицу с версией OS X со страницы Википедии, используягрэп
- Затемгрэптаблица с версией OS X, которую вы используете
- Ваша версия OS X получена изsw_vers, которыйдвойной-грэпредиголоваредчтобы выделить 2-значный номер версии
- И последнее, но не менее важное: показан второй столбец таблицы Википедии (будем надеяться, что в этом столбце сохранят названия животных) с использованиемawk
Короче говоря: возможно ли это сделать?Да. Он надежный и не требует обслуживания?Нет.
решение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
over http
для этой услуги.
решение3
Названия животных приведены только в маркетинговых целях. Запуск терминала и выполнение запросов приведет только к числовым ссылкам, подобно тому, как язык ограничен терминологией на основе unix.