ターミナルからバージョンだけでなく、OSX の動物名を取得できますか?

ターミナルからバージョンだけでなく、OSX の動物名を取得できますか?

他の質問では、現在の OSX バージョンの数値名を取得する方法、つまり「sw_vers -productVersion」について説明されています。しかし、Lion、Mavericks などの動物の名前を取得する方法は知りません。この単語は、Apple の「この Mac について」には表示されません。

答え1

2 つの選択肢を紹介します。 どちらも (いくつかの) 欠点がありますが、機能し、質問への回答になります。

最初の解決策: 動物の名前を含む bash スクリプトを作成します。欠点は、新しいバージョンが登場した場合に手動でエントリを追加する必要があることです。ただし、これは 2 年に 1 回程度です。

#!/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]}"

2番目の解決策:ウィキペディアそして、動物の名前を取得するワンライナーbashスクリプトを作成します。グレップカールhtml2テキスト(私はこれを醸造する)、スワップそしてawk彼女のひどい意地悪さは次のとおりです。

カール -shttp://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 '{ print $2 }'

少し説明します:

  • Wikipediaのページを取得するにはカール
  • これをASCIIに変換するにはhtml2テキスト
  • WikipediaページからOS Xバージョンの表を分離するには、グレップ
  • それからグレップ使用しているOS Xのバージョンの表
  • OS Xのバージョンはスワップ、これはダブル-グレップエドそしてエド2桁のバージョン番号を分離する
  • 最後に、Wikipediaの表の2番目の列は次のように表示されます(動物の名前がその列に残っていることを祈ります)。awk

簡単に言うと、それはできるのでしょうか?はい堅牢でメンテナンスフリーですか?いいえ

答え2

この問題の解決策を探していたところ、次のブログ記事を見つけました。 https://erikberglund.github.io/2016/Apple_Product_Marketing_Name_Query/

ブログ投稿の簡単な要約として (消えてしまった場合に備えて)、Apple にはバージョン 10.7 以降の macOS のマーケティング名を照会できる Web サービスがあります。マーケティング名が必要な 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 はこのサービスに対してhttpsoverの使用を強制しています。http

答え3

動物の名前はマーケティング目的のみに使用されます。ターミナルを実行してクエリを実行すると、言語が Unix ベースの用語に限定されているのと同様に、数値参照のみが表示されます。

関連情報