問題があります。 bashに非常に長いコマンドを入力すると、端末は私が入力した内容を正しくレンダリングしません。次のようなコマンドがあればいいです。
username@someserver ~/somepath $ ssh -i /path/to/private/key
[email protected]
コマンドは2行にレンダリングする必要があります。代わりに、通常、次のようにプロンプトの上部に書き込みを開始します。
[email protected] -i /path/to/private/key
戻っていくつかのパラメータを変更することにした場合、カーソルがどこに表示されるのかわかりません。時にはプロンプトの途中に表示されますが、通常は行に表示されます。以上私がこれを入力しているところ。
前のコマンドを実行すると、Upもっと面白いことが起こります。私はgnome-terminalとterminatorだけでなくi3とCinnamonでもこれを試しました。誰かがこれが私のヒントであることを提案し、ここにあります。
\[\033[01;32m\]\u:\[\033[01;34m\] \W\033[01;34m \$\[\033[00m\]
Ctrll, reset
, ,clear
やろうとするが,再び命令を入力してもUp同じ現象が発生します。
確認してみるとcheckwinsize
bashで有効になっています。これは80x24やその他のウィンドウサイズで発生します。
これが私が一緒に暮らす方法を学んだのでしょうか?私が知る必要がある魔法はありますか?非常に短いプロンプトだけを使用することにしましたが、問題は解決しません。
答え1
印刷できないシーケンスは次のようにする必要があります。に含まれてい\[
ます\]
。あなたを見ているPS1その後には閉じていないシーケンスがあります\W
。ただし、2番目の項目は重複しており、前の文を繰り返します。「1;34」。
\[\033[01;32m\]\u:\[\033[01;34m\] \W\033[01;34m \$\[\033[00m\]
|_____________| |_|
| |
+--- Let this apply to this as well.
したがって、予想される色が必要です。
\[\033[1;32m\]\u:\[\033[1;34m\] \W \$\[\033[0m\]
|_____|
|
+---- Bold blue.
維持する「オリジナル」これはまた働きます:
\[\033[1;32m\]\u:\[\033[1;34m\] \W\[\033[1;34m\] \$\[\033[0m\]
|_| |_|
| |
+-----------+-- Enclose in \[ \]
編集する:
この問題は、bash
プロンプトが実際より長いと信じているために発生します。簡単な例を挙げると、次のようになります。
PS1="\033[0;34m$"
1 2345678
プロンプトは1文字ではなく8文字と見なされます。したがって、ターミナルウィンドウに20個の列がある場合、12文字を入力した後は20文字と見なされ、ラップされます。バックスペースやCtrl+u。 9列で停止します。
ただし、最後の列以外の新しい行は開始されないため、最初の行は上書きされます。
入力し続けると、その行は32文字後に次の行に進みます。
答え2
これは、ほとんどの場合、端末が想定するウィンドウサイズが実際のウィンドウサイズと異なることに関連しています。 bashを使用している場合は、これを試してみてください。
$ shopt checkwinsize
得られないと
checkwinsize on
その後、有効にしてください
$ shopt -s checkwinsize
その後、別のコマンド(たとえばls
)を実行するか、ウィンドウサイズを一度調整してみると、上記の方法は毎回効果的でした。
特にRedhatシステムの場合、問題は通常、誤った設定と~/.bashrc
呼び出しが原因で発生します/etc/bashrc
。通常、bashはデフォルトで含まれている~/.bashrc
期待される呼び出しをロードします。/etc/bashrc
shopt -s checkwinsize
答え3
私は一度どこかで\001
and を使ってこの問題を解決するという内容を読んだことがあります。それは私のために働きます。\002
\[
\]
ところで、PS1を定義することは醜いように見える必要はありません。
green="\001$(tput setaf 2)\002"
blue="\001$(tput setaf 4)\002"
dim="\001$(tput dim)\002"
reset="\001$(tput sgr0)\002"
PS1="$dim[\t] " # [hh:mm:ss]
PS1+="$green\u@\h" # user@host
PS1+="$blue\w\$$reset " # workingdir$
export PS1
unset green blue dim reset
答え4
COLUMNS
LINES
これは&環境変数の設定に問題があるようです。通常、ウィンドウのサイズを変更すると、gnome-terminalによって自動的に設定され(私の意見では)、コマンドを実行して手動で強制的に設定できますresize
。
はい
gnome-terminalのサイズを79x17に調整すると、私の変数は次のようになります。
$ echo $COLUMNS; echo $LINES
79
17
次のように強制できます。
$ resize
COLUMNS=79;
LINES=17;
export COLUMNS LINES;