macOS 環境の調べ方

　macOS で、各種開発関連ツールのバージョンを確認する方法をまとめました。

　「macOS のバージョンを確認して」「〇〇のバージョンも確認して」と別々に確認する際に、ツールごとに都度別々の方法で確認方法を調べるのが苦しくなってきたので。シェルにして実行すれば、一発でいろいろ確認できます。

## 免責

　私もインストールしていないものがあるので、動作確認とれていないものもあります。

## まとめシェル

　<ruby><rb>開発者</rb><rp>（</rp><rt>デベロッパー</rt><rp>）</rp></ruby>が使いそうなツール群のバージョン確認コマンドを集めました。もちろんデフォルトではインストールされていないものもありますから、そういったものは表示されません。

　行を増やしていこうと思えばキリがないので、適宜削除してお使いください。また、複数行出力されるコマンドは不要な行もあるでしょうから、お好みで grep してください。

　また中には、出力内容に__ローカルパスが含まれるものもあります__ので、出力内容を誰かに共有する場合などはご注意ください。

```sh:macver.sh
#!/bin/zsh
# https://qiita.com/Tachy_Pochy/items/d5d4bf82f4e00eea1fd4

# macOS
sw_vers
# このシェルを作成した時の結果
# ProductName:	Mac OS X
# ProductVersion:	10.15.7
# BuildVersion:	19H1323

# gcc
echo -n "gcc version: "; gcc -dumpversion

# Xcode
xcodebuild -version

# Git
git --version

# Homebrew
brew --version

# MacPorts
port version
port installed

# Docker
docker version

# Vagrant
vagrant version

# Node.js
node -v
echo -n "npm version: "; npm -version
npm list --depth=0 -g

# Python
python --version
python3 -VV
pip3 list

# Swift
swift --version

# AppleScript
echo -n "AppleScript version: "; osascript -e 'version of AppleScript'

# PHP、Pear および composer
php -v
pear list
composer --version
composer show -i

# Ruby
ruby -v
gem list

# JAVA 、JDK および JAVA_HOME
java --version
javac --version
echo -n "JAVA_HOME="
/usr/libexec/java_home
set | grep LANG

# Perl
perl --version | grep version

# シェル
sh --version
zsh --version
tcsh --version

# Apache
httpd -v

# Nginx
nginx -V

# SQLite
echo -n "SQLite3 version: "
sqlite3 -version

# curl
curl --version

# PlantUML
java -jar plantuml.jar -version| grep PlantUML\ version

# Graphviz (dot)
dot -V

# Visual Studio Code
echo -n "Visual Studio Code version: "
code -v
code --list-extensions --show-versions

# CotEditor
echo -n "CotEditor version: "
cot -v

# Go
echo -n "Golang version: "
go version

```

## その他

### Xcode にバンドルしている他のアプリケーションのバージョン確認

```sh
echo -n "Accessibility Inspector.app version: "
defaults read /Applications/Xcode.app/Contents/Applications/Accessibility\ Inspector.app/Contents/version.plist CFBundleShortVersionString

echo -n "Create ML.app version: "
defaults read /Applications/Xcode.app/Contents/Applications/Create\ ML.app/Contents/version.plist CFBundleShortVersionString

echo -n "FileMerge.app version: "
defaults read /Applications/Xcode.app/Contents/Applications/FileMerge.app/Contents/version.plist CFBundleShortVersionString

echo -n "Instruments.app version: "
defaults read /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/version.plist CFBundleShortVersionString

echo -n "Reality Composer.app version: "
defaults read /Applications/Xcode.app/Contents/Applications/RealityComposer.app/Contents/version.plist CFBundleShortVersionString
```

### AppleScript の別の方法

```sh
echo -n "AppleScript version: "
defaults read /System/Library/Components/AppleScript.component/Contents/version.plist CFBundleShortVersionString
```

### Ruby の別の方法

```sh
gem environment
```

### PHP の別の方法

　より詳しく知る。Apache のモジュールなんかも出力される。

```sh
php -i
```

　ローカルパスや環境変数がたくさん含まれるので注意。

### Perl の別の方法

　より詳しく知る。

```sh
perl -V
```

### Tomcat

　インストールしたことがないので詳しくないのですが、`version.sh` というシェルがあるようです。

　シェルの場所は `$CATALINA_HOME/bin` だと思います。

```sh
echo $CATALINA_HOME
```

## DB 系

　DB 系で重要なのはクライアントのバージョンではなく、サーバのバージョンだと思うので、上記のシェルには含めませんでした。

　お使いの環境に合わせて、下記の<ruby><rb>１行で実行するコマンド</rb><rp>（</rp><rt>ワンライナー</rt><rp>）</rp></ruby>を作成してシェルに加えてください。

　また、シェルの中にパスワードを記述しないようにしましよう。

### MySQL の別の方法

　未確認です。

```sh
mysql -e "SELECT VERSION();"
```

　もっと未確認です。

```sh
mysql -e "status;"
```

　接続情報込み。

```sh
mysql -u=<user_name> -h=<host_name> -p -e "SELECT VERSION();"
```

　パスワード入力を省略する方法。

[MySQLで幸せになれるヤツの続き-パスワードを隠蔽する方法 - なからなLife](https://atsuizo.hatenadiary.jp/entry/2017/03/09/090000)

### PostgreSQL の別の方法

　未確認です。

```sh
psql -c "SELECT version();"
```

　接続情報込み。

```sh
psql -U <user_name> -d <db_name> -p <port> -c "SELECT version();"
```

　パスワード入力を省略する方法。

[psqlでログインするときのパスワード入力を省略する - Qiita](https://qiita.com/IysKG213/items/2af29ba1f6da87199de0)

　でも上記方法は平文で保存されるので、抵抗がありますね。

### Oracle の確認方法

　これもインストールしたことがなく、ちょっと自信ありませんが。

```sh
echo "SELECT * FROM v$version;" | sqlplus / as sysdba
```

　接続情報込み。

```sh
echo "SELECT * FROM v$version;" | sqlplus <user_name>@<host>:<listener_port>/<service_name>
```