zshでポータブルな statコマンドを使う

ほとんどの人は知る必要はないと思いますが、zshの補完を書いていて環境に応じて statコマンドでファイル更新日時を取得する必要があったのですが, GNU系と BSD系でコマンド体系が違うくて何かいい方法がないかと調べたところ zshの stat moduleを使えばいいということがわかった.

モジュールのロード

zmodload -F zsh/stat b:zstat 2> /dev/null # 補完スクリプトだと複数回実行されることがあるため, エラー表示は捨てる

これで zstatというコマンドが使えるようになります.

使い方 例

# ファイル更新日時を表示
zstat +mtime README.md

# 結果を表示せず指定した配列変数に格納する
zstat -A array_var README.md

詳しくは https://zsh.sourceforge.io/Doc/Release/Zsh-Modules.html を参照してください. 補完も当然効くのでそれでもだいたいわかります.