プロンプトの$を終了コードによって色変更する

後輩から教わったTips。

$ echo foo

↑これの「$」の色を前のコマンドの終了コードが0以外だったら赤色表示にしたい。

$ false
$
# ↑$を赤くする

Mac のターミナルを使っているので .bash_profile を編集して変数 PS1 をいじる。

RETURN_CODE_DOLLAR='$([ $? -eq 0 ] && echo -en \[\e[37m\] || echo -en \[\e[31m\])\$\[\e[37m\]'
PS1="${RETURN_CODE_DOLLAR} "

これでよろしい。PS1の中で $()を使って色を埋め込む。

ついでにカレントディレクトリを表示したかったら、こう。

CURRENT_DIR="\[\e[36m\]\W\[\e[37m\]"
RETURN_CODE_DOLLAR='$([ $? -eq 0 ] && echo -en \[\e[37m\] || echo -en \[\e[31m\])\$\[\e[37m\]'
PS1="${CURRENT_DIR}${RETURN_CODE_DOLLAR} "

こうなる。

f:id:fuji_haruka:20190227190428p:plain