🫢

Zsh でコマンドの終了コードが0以外の場合に目立たせる

2025/01/07に公開1

とある本を写経していて、コマンド失敗を見逃して数分を無駄にしました。
2つのコマンドを連続して実行していて、1つ目を見逃しました。
以下のような表示です。(この下に2つ目のコマンドの結果がもっと続く)

終了コード(Exit Code) がもっと目立てば気づけたかもしれない、と思ったので、目立たせてみました。

シェル変数 PROMPT を編集する

# .zshrc
PROMPT='%(?..
%B%F{black}%K{red}Exit Code: %?%k%f%b )
%% '

異常終了時に以下のように表示されます。

実際の設定では、カレントディレクトリやgitブランチも表示させているので以下のようにコード量も多いです。

# Git関連
autoload -Uz vcs_info
 setopt prompt_subst
 zstyle ':vcs_info:git:*' check-for-changes true
 zstyle ':vcs_info:git:*' stagedstr "%F{magenta}!"
 zstyle ':vcs_info:git:*' unstagedstr "%F{yellow}+"
 zstyle ':vcs_info:*' formats "%F{cyan}%c%u[%b]%f"
 zstyle ':vcs_info:*' actionformats '[%b|%a]'
 precmd () { vcs_info }

# プロンプトカスタマイズ
PROMPT='%(?..
%B%F{black}%K{red}Exit Code: %?%k%f%b )
[%B%F{red}%n@mbp2021%f%b:%F{green}%~%f]%F{cyan}$vcs_info_msg_0_%f
%F{yellow}%%%f '

参考資料

https://myon.info/blog/2019/08/08/do-not-ignore-exit-status/
https://zenn.dev/ishihaya/articles/07c3b3c78baacd

Discussion

Koji TanakaKoji Tanaka

この記事を書いてすぐにStarshipというツールを見つけ、なんだか良さそうなので
このTipsはすぐ使わなくなるかもしれません…