前のコマンドの成功に応じて、端末プロンプトの色を変更したいと思います。現在、次のスクリプトでこれを達成しています。
exitstatus()
{
if [[ $? == 0 ]]; then
echo -e "\e[38;5;45mबरें"
else
echo -e "\e[38;5;211mचूक"
fi
}
PS1="\[\e[38;5;252m\][\[\e[38;5;214m\]\A \$(exitstatus)\[\e[38;5;252m\]]> \[\e[0m\]"
ここでの問題は、終了状態内のエコーが色を正しくエスケープしないため、一部の見えない文字が残るということです。長いコマンドを入力すると、端末は行を短く切り、前の行の上に新しい行を書きます。
\[\]
PS1変数を使用して約\e[...m
。しかし、Echoにはエスケープ文字として角括弧がなく、色を正しくエスケープする方法が見つかりません。