質問: "\ [\ e [1; 31m \]"-機能しています
回答: bashマニュアルから: \[非印刷文字のシーケンスを開始します。これを使用して、端末制御シーケンスをプロンプトに埋め込むことができます。 \]印刷されない文字のシーケンスを終了します \[と\]は端末に渡されません。それらはbashに、それらの間の文字は印刷されないことを伝えます。それらがないと、bashは、エスケープ文字に続くシーケンス([32;1mなど)が画面上のスペースを占有しないことを認識できませんでした。これは、プロンプトの長さを正しく計算しなかった理由を説明しています。それらを除外しました。あなたはあなたの質問にあまり一貫性がないことに注意してください(またはおそらくそれはmarkdownの単なる間違いです)。 $ps1には、角かっこ(文字通り表示される)だけでなく、文字通りの円記号と角かっこシーケンスが必要です。\eで始まるエスケープシーケンスは、ターミナルエミュレータによって解釈されます。それらは xterm制御シーケンス(ctlseqs) ドキュメントに文書化されています(他の端末エミュレーターはほとんど互換性がある傾向があります)。たとえば、\e[32;1mは太字と緑色の前景に切り替わります。 \e[40m背景色を黒に切り替えます。 \e[0mはデフォルトの属性を復元します。