GNU/Linux >> Linux の 問題 >  >> Linux

履歴を参照すると、Bashプロンプトがバグになるのはなぜですか?

この質問にはすでに回答があります :ターミナルプロンプトが正しくラップされない

(9つの回答)
3年前に閉鎖されました。

コマンドの履歴を見始めると、表示されているコマンドの一部の文字が消去されないことがよくあります。例:

何が起こっているのか:

prompt$ some_command
prompt$ some_commanother_command

何が起こったのか:

prompt$ some_command
prompt$ another_command

これらの文字を消去することはできず、コマンドの実行時にbashはそれらを無視します。また、新しいプロンプトが表示されているとき(Enterを押した後)にも表示されなくなります。 たとえば)。

私の職場でLinuxを使用している他の人に聞いたところ、彼らもその問題を抱えていることがあるとのことでしたが、その問題をどのように解決するかについてはわかりませんでした。

私はUbuntu11.10を持っていて、guakeを使用しています。これが私のPS1です :

e[0;31mu A ${PWD##*/}e[0;32m$(parse_git_branch)e[0;31m$e[m

ここで、parse_git_branch

parse_git_branch () {
    git name-rev HEAD 2> /dev/null | sed 's#HEAD (.*)# (1)#'
}

私の知る限り、「派手な」PS1が少なくても、同僚はその問題を抱えています。

承認された回答:

[...]を使用する PS1の長さが0の部分の周り。bashがプロンプトの長さを正しく取得するのに役立ちます。この方法を使用しても、マルチバイト文字を使用するとコマンドラインが台無しになる可能性があります(少なくとも私の場合はそうです)。 Ctrl + Lを押す このような場合にも役立ちます(ただし、同時に画面をクリアします)。


Linux
  1. 一部のコマンドをBash履歴に保存されないようにしますか?

  2. Bashでコマンドプロンプトの色を設定するには?

  3. 複数のセッションを実行しているときの奇妙な bash 履歴の動作

  1. コマンドラインでの毎日のBashのヒント

  2. Bashは最初の行を上書きします、Ps1 Bashプロンプト?

  3. Bashの感嘆符(!)を理解していますか?

  1. Bashスクリプトがエイリアスを認識しないのはなぜですか?

  2. 〜/ .bash_profileが機能しないのはなぜですか?

  3. Bashの完了が代替案を循環することは可能ですか?