ターミナルからMacのOSのバージョンを取得してみる



Nプログラマ(@Nprog128)です。

記事でMacの環境情報を書く時、メニューバー » アップルアイコン » このMacについてからマウス操作でコピーしています。

これが面倒になってきたのでTerminalのコマンドからコピーできるようにしてみます。

環境情報

  • Mac OS X 10.13.6
  • awk version 20070501

sw_versコマンドを使いOSのバージョン情報を取得

sw_versというMacのコマンドを使えば、以下のような情報が表示されます。

1\$ sw_vers
2
3ProductName:    Mac OS X
4ProductVersion: 10.13.6
5BuildVersion:   17G7024

これをこのままpbcopyに渡してもいいのですが、不要な情報が多いです。

1sw_vers | pbcopy
2
3# 貼り付けで表示される内容
4ProductName:	Mac OS X
5ProductVersion:	10.13.6
6BuildVersion:	17G7024

そこでawkコマンドを使い、Mac OS X10.13.6を取得してみます。

参考

sw_versについて、こちらを参考にしました。ありがとうございます。

awkコマンドで必要な部分だけを表示してコピーする

コード

ちょっと苦戦しましたが、最終的なコードは以下のようになりました。

1\$ sw_vers | awk -F'\t' '{ if ($1 != "BuildVersion:") print $2; }' | pbcopy

使い方

上記のコードをコピーして実行すれば、クリップボードに出力結果がコピーされます。

ターミナルで表示したい場合は、最後のpbcopyへパイプで渡す部分を削除して実行します。

1\$ sw_vers | awk -F'\t' '{ if ($1 != "BuildVersion:") print $2; }'

コードの説明

オプションF

-Fオプションは区切る文字を指定するもので、今回はタブ区切りにしています。

Fオプションを指定しない場合

デフォルトだとタブ or 空白で区切られるので、以下のような出力になります。

1\$ Mac 10.13.6

本当はMac OS Xという文字列が欲しいのですが、ここに2個の空白が含まれているため分割されてしまい、OSX$3$4の引数に入っている状態になっています。

このためFオプションを使っています。

確認のため、$3と$4の中身を表示するコードを書いておきます。

$3を表示するスクリプト コードを開く
$3を表示するスクリプト
1\$ sw_vers | awk '{ print $3 }'
2# 表示される結果
3OS 
$4を表示するスクリプト コードを開く
$4を表示するスクリプト
1\$ sw_vers | awk '{ print $4 }'
2# 表示される結果
3X

OSとXが$3と$4に入っていることが確認できました。

if文の処理

一番最後のBuildVersion:の行は不要なので、$1にBuildVersion:が含まれていない時に$2を表示するようにしています。

こうすることでMac OS X10.13.6を表示することができます。

実行結果

先程のコマンドを実行して、貼り付けた結果を見てみます。

1\$ sw_vers | awk -F'\t' '{ if ($1 != "BuildVersion:") print $2; }' | pbcopy
2
3# 貼り付けた結果
4Mac OS X
510.13.6

うまく動作しました。 本当はHish Sierraなどコードネームを表示したいのですが、これはsw_versにはないのでバージョン別に条件分岐で表示する必要がありそうです。

なプ

これは別の機会に挑戦してみます。

おわりに

今回はawkコマンドを使い、sw_versの表示結果からOSとバージョン情報をコピーするという内容でした。

これでブログを書いている時の環境情報を書く時ほんのちょっとラクになりました。

それでは、このへんで。
バイナリー!

\ ちょっとお買い物 /


関連した記事