web-dev-qa-db-ja.com

コマンドが長くなりすぎると、コマンドラインが上書きされます

私はPuTTYを使用してDebianサーバーにログインしています。私が入力しているコマンドが長くなりすぎると、折り返して新しい行を開始しないという奇妙な問題があります。代わりに、それはsame行の先頭から始まり、プロンプトを上書きしてから、コマンドの先頭を上書きし始めます。

コマンドは問題なく実行されますが、本当に面倒です。これを修正する設定があると思いますか?

35
Janak

Bashはウィンドウのサイズが変更されたことを示す信号を取得しないため、別のコマンドの実行中にPuTTYウィンドウのサイズを変更すると、この動作が見られました。

これが追加の問題である場合:

shopt -s checkwinsize

それは消えるはずです。

14

私はこれを自分で解決しました。

PS1コマンドプロンプトの一部のカラーエスケープです。

LTGREEN="\033[40;1;32m"
LTBLUE="\033[40;1;34m"
CLEAR="\033[0m"
LIGHT_GRAY="\033[40;1;33m"
export PS1="$LTGREEN\u$LTBLUE@\h:$LIGHT_GRAY\w$CLEAR ❯ "

問題は、カラーリテラルが角括弧で囲まれていないことです。エスケープブラケットをそれらの周りに配置すると、問題が完全に修正されます。

LTGREEN="\[\033[40;1;32m\]"
LTBLUE="\[\033[40;1;34m\]"
CLEAR="\[\033[0m\]"
LIGHT_GRAY="\[\033[40;1;33m\]"
export PS1="$LTGREEN\u$LTBLUE@\h:$LIGHT_GRAY\w$CLEAR ❯ "

お役に立てれば。

71
trisweb

試してください:

eval $(resize)

10
Rob Curtis

押してみてください CtrlL。 (または多分 AltLsomethingL とにかく。)私が正しく覚えている場合は、コードを再実行して端末のサイズを把握し、それに応じて調整します。

7
Orion Edwards
Ctrl-l

Ctrl-lが機能します。 PuTTYは

2
ozn

これは solution でうまくいきました:.bashrcに次のスニペットを追加してください:

if [ $(tty) == '/dev/ttyS0' ]; then
  trap resize DEBUG
fi
1
Peter Pablo