![我可以從終端機取得 OSX 的動物名稱,而不僅僅是版本嗎?](https://rvso.com/image/1419592/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%BE%9E%E7%B5%82%E7%AB%AF%E6%A9%9F%E5%8F%96%E5%BE%97%20OSX%20%E7%9A%84%E5%8B%95%E7%89%A9%E5%90%8D%E7%A8%B1%EF%BC%8C%E8%80%8C%E4%B8%8D%E5%83%85%E5%83%85%E6%98%AF%E7%89%88%E6%9C%AC%E5%97%8E%EF%BC%9F.png)
其他問題則討論如何取得目前 OSX 版本的數位名稱,即使用「sw_vers -productVersion」。但是,我知道沒有辦法獲得動物詞名稱,例如獅子、小牛等?這個字沒有出現在 Apple / About this mac 中。
答案1
我會給你兩個選擇。兩者都有(一些)缺點,但它們有效並回答了您的問題。
第一個解決方案:製作一個包含動物名稱的 bash 腳本。缺點是如果出現新版本,您必須手動新增條目。但這大約每兩年一次。
#!/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。這是她皇家的骯髒:
捲曲-shttp://en.wikipedia.org/wiki/OS_X| html2text -nobs -ascii | html2text -nobs -ascii | grep -E '^(Mac_)?OS_X.[0-9]{4}。' | grep -f <( sw_vers | grep "產品版本" | grep -o '[0-9].[0-9]' |頭-1) | awk '{ 印出 $2 }'
一點解釋:
- 使用取得維基百科頁面捲曲
- 使用以下命令將其轉換為 asciihtml2text
- 使用下列命令將具有 OS X 版本的表與 Wikipedia 頁面隔離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 版本的行銷名稱,您可以執行 oneliner
curl -s "https://support-sp.apple.com/sp/product?edid=$(sw_vers -productVersion)" |
xmllint --xpath '/root/configCode/text()' -
請注意,自 2017 年 11 月起,Apple 已強制在該服務中使用https
over 。http
答案3
動物名稱僅用於行銷目的。執行終端並進行查詢只會產生數字引用,就像該語言僅限於基於 UNIX 的術語一樣。