我可以从终端获取 OSX 的动物名称,而不仅仅是版本吗?

我可以从终端获取 OSX 的动物名称,而不仅仅是版本吗?

其他问题讨论了如何获取当前 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 脚本。你需要一个可用的版本grep卷曲html2text(我使用酿造),sw_versawk。以下是她皇室的肮脏之处:

卷曲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]' | head -1 ) | awk '{ 打印 $2 }'

稍微解释一下:

  • 使用以下方式获取维基百科页面卷曲
  • 使用将其转换为 asciihtml2text
  • 使用以下方法从 Wikipedia 页面中隔离 OS X 版本的表格grep
  • 然后grep您正在使用的 OS X 版本的表格
  • 您的 OS X 版本来自sw_vers,即双倍的-grep编辑编辑分离出 2 位数的版本号
  • 最后,但并非最不重要的是,维基百科表格的第二列显示(希望他们保留该列中的动物名称)使用awk

长话短说:可以做到吗?是的. 它是否坚固且免维护?

答案2

当我正在寻找解决方案时,我偶然发现了这篇博客文章: https://erikberglund.github.io/2016/Apple_Product_Marketing_Name_Query/

作为博客文章的简要总结(以防它消失),Apple 有一个 Web 服务,您可以查询 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 年 11 月起,Apple 已强制使用https此项http服务。

答案3

这些动物名称仅用于营销目的。运行终端并进行查询只会产生数字引用,就像该语言仅限于基于 unix 的术语一样。

相关内容