プロンプトを好きなように変更してみましたが、最後に入力したコマンドを切り替えると(キー矢印を使用)、プロンプトを含む行全体が削除され、最近入力したコマンドとともにプロンプトの一部の文字だけが削除されることがあります。コマンドコマンドはまだ次のようになります。
予想出力:
bucky in [~]: cd ..
出力:
buccd ..
「buc」はプロンプトの一部であり、「cd ..」は私が入力した最新のコマンドです。
私のヒント:
PS1="\[\033[0;34m\u\] \[\033[0;37min\] \[\033[1;32m[\]\[\033[0;31m\w\]\[\033[1;32m]\]\[\033[0;37m:\] "
以下は視覚的なイメージです。
必要に応じてUbuntu 16.04を使用してください。
答え1
これは、プロンプトの印刷部分\u
in
\w
が:
エスケープされた角かっこ内にあるためです。括弧は通常、印刷されない文字の周りに配置され、 bash にカーソルを移動しないように指示して、プロンプトのサイズを正しく計算します。カーソルが印刷部分に正しく移動しません。
.bashrc
プロンプトを上書きするのではなく、プロンプトを設定する部分を変更することをお勧めします...#
この行のコメントを削除(削除)できます。
#force_color_prompt=yes
次に、このコードスニペットの2行目を修正します。
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
だからそれは言う:
PS1='${debian_chroot:+($debian_chroot)}\[\033[00;34m\]\u \[\033[0;37m\]in \[\033[01;32m\][\[\033[0;31m\]\w\[\033[1;32m\]]\[\033[0;37m\]: '
または、必要に応じてファイルの末尾にオーバーライドを追加するだけです。
PS1='\[\033[00;34m\]\u \[\033[0;37m\]in \[\033[01;32m\][\[\033[0;31m\]\w\[\033[1;32m\]]\[\033[0;37m\]: '
これはUbuntu 16.04であなたが欲しいと思うことを達成し、あなたが説明する方法を壊すことはありません。 (私はPS1をプレイしたときにこれを経験したことがあります!)
答え2
角かっこを間違って使用しました。
PS1="\[\033[0;34m\]\u \[\033[0;37m\]in \[\033[1;32m\][\[\033[0;31m\]\w\[\033[1;32m\]]\[\033[0;37m\]: "
答え3
あなたを混乱させるのは括弧です。特に、作業ディレクトリの先頭にエスケープされていない「[」があります。 "[\w" これを試してみてください:
PS1="\033[0;34m\u \033[1;32m\[[\033[0;31m\w\033[1;32m]\033[0;37m: "
私の端末で何をしたいのかを正確に実行します。