場合によっては、端末画面が乱れてman ls
マニュアルページを読み取るか、上矢印を押して履歴の前のコマンドに移動すると、画面に誤った位置に文字が表示されます。 (たとえば、画面の端が画面の中央のどこかにあると思います。)
コマンドをreset
試しましたが、うまくいきませんでした。 1つの可能な方法は、ログアウトするか、ウィンドウを閉じてから最初にサイズ変更してから実行することですssh
(またはタブを閉じてウィンドウをサイズ変更してから、新しいタブを開いて新しいシェルをインポートする)。
ただし、この場合、仮想マシンコンソールの起動など、以前に行ったすべての操作は失われます。それでは、シェルを閉じないと、この問題を解決する方法はありませんか?
(これは以前はFedoraの内部で発生し、ssh
RHEL 5.4ボックスのMacbookでも発生しました。)
修正する:今Fedoraで何が起こったのか覚えています。端末を開き、仮想マシンのコンソール(シェル)を使用するためにFreeVMを作成しました。 80 x 25だったようですが、しばらくすると端末のサイズを約130 x 50に調整しましたが、(仮想マシンの)「内部シェル」が奇妙に動作し始めました。
答え1
Bashを使用している場合は、セッションで "checkwinsize"オプションが有効になっていることを確認してください。
shopt | grep checkwinsize
得られないと
checkwinsize on
その後、有効にしてください
shopt -s checkwinsize
Bash ドキュメントでは、「checkwinsize」属性について説明します。
「設定されている場合、Bashは各コマンドの後にウィンドウサイズを確認し、必要に応じてLINESとCOLUMNSの値を更新します。」
checkwinsize
この設定が好きなら~/.bashrc
。
- 活性化:
shopt -s checkwinsize
- 障害を与える:
shopt -u checkwinsize
答え2
Ctrl+を試してみてくださいL。プログラムに従って端末画面を消去または再描画します。
答え3
SIGWINCH
私は同じ問題があり、上記の方法のどれも私には効果がありませんでした。なぜなら、私のbashが親プロセスによって捕捉された信号を受け取っていないと信じていたからです。
ついに解決策を見つけました。私は私のアイテムに以下を追加しました.bashrc
。
export PROMPT_COMMAND="resize &>/dev/null ; $PROMPT_COMMAND"
これで、新しいメッセージが表示されるたびにウィンドウのサイズが変更されます。
ありがとうイギリス猿PROMPT_COMMANDが改善されました。
答え4
docker execにこれらのオプションを追加すると、私の問題は解決するようです。
-e COLUMNS=$COLUMNS -e LINES=$LINES -e TERM=$TERM