ターミナルから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 Xと10.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個の空白が含まれているため分割されてしまい、OSとXが$3と$4の引数に入っている状態になっています。
このためFオプションを使っています。
確認のため、$3と$4の中身を表示するコードを書いておきます。
$3を表示するスクリプト コードを開く
$4を表示するスクリプト コードを開く
OSとXが$3と$4に入っていることが確認できました。
if文の処理
一番最後のBuildVersion:の行は不要なので、$1にBuildVersion:が含まれていない時に$2を表示するようにしています。
こうすることでMac OS Xと10.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とバージョン情報をコピーするという内容でした。
これでブログを書いている時の環境情報を書く時ほんのちょっとラクになりました。
それでは、このへんで。
バイナリー!