web-dev-qa-db-ja.com

シェルプロンプトのカスタマイズとcmdの動作

プロンプトに表示したい:

  1. 現在の(絶対)作業ディレクトリ、緑色で表示され、

  2. 新しい行、ドル記号、空のスペース。

私は.profileでこの行を使用しています

export PS1='\e[0;32m$(pwd)\n\e[m$ '

だから例えばDesktop、私のプロンプトは次のようになります。

ただし、上矢印を押して前のコマンドを再実行すると、プロンプトの開始時にランダムな文字シーケンスが表示されることがあります。 g。

cd cd Desktopコマンドをヒットしたことがありません。最も奇妙な部分は、バックスペースが上記の2つのcdコマンドの最初のコマンドも削除しないことです!

助言がありますか?

4
pkaramol

プロンプト内の非印刷文字がエスケープされた角括弧内にあることを確認する必要があります。そうでない場合、bashはプロンプトのサイズを正しく計算できません。私はあなたのためにそれを修正したと思います:

PS1='\[\e[0;32m\]$PWD\n\[\e[m\]$ '
6
Zanna

まず第一に、これに関する正しい方法を指摘してくれた@Zannaに感謝します。

より完全な答えを得るために、以下を含むソリューションを拡張しました。

a)緑色のcwd

b)NEW行では、gitブランチ(存在する場合)が黄色い色で、ブランチが汚れている場合は赤い星が付きます

Bを達成するには、 git対応プロンプト が必要です

~/.bashrcの最終行として次のようになります

export PS1='\[\e[0;32m\]$PWD\n\[\e[m\]\[\e[0;33m\]$git_branch\[\e[m\]\[$txtred\]$git_dirty\[$txtrst\]$ '

Gitブランチを使用している場合、プロンプトはこのように拡張されます。

enter image description here

2
pkaramol