Bash ターミナルがテキストを正しく折り返さない

Bash ターミナルがテキストを正しく折り返さない

私はgnome-terminalbash で を使用していますが、行をまたぐコマンドがある場合、同じ行に留まってしまいます。そのため、次の代わりに:

echo "abcdefghijklmnopqrstuvwxyz"

私は

opqrstuvwxyz""abcdefghijklmn

またはそれに似たようなものです。ただし、Enter キーを押すとコマンドは機能します。PS1 変数と関係があると思いますが、何が問題なのかわかりません。これがそれです:

export PS1='\e[1;35m[\u:\w]\$\e[0;35m '

答え1

これは多少関連があるようです:

tputBash のマニュアル ページでは、出力を で囲むこと\[ \]が推奨されています。これにより、Bash は印刷できない文字を無視し、プロンプトのサイズを正しく計算できるようになります。

ソース

tputあなたの場合の「出力」は次のようになります: \e[1;35m\e[0;35m(ラップする 2 つの別々のフラグメントがあります)。 および と記述することもできます\033[1;35m\033[0;35m一般に、印刷できないシーケンスはラップする必要があります。

以下を変更しましたPS1:

export PS1='\[\e[1;35m\][\u:\w]\$\[\e[0;35m\] '

私の場合は問題なく動作しているようです。

関連情報