エコエラー解析色

エコエラー解析色

前のコマンドの成功に応じて、端末プロンプトの色を変更したいと思います。現在、次のスクリプトでこれを達成しています。

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にはエスケープ文字として角括弧がなく、色を正しくエスケープする方法が見つかりません。

関連情報