其他问题讨论了如何获取当前 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_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]' | 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 的术语一样。