問題を引き起こす新しいbashプロンプト

問題を引き起こす新しいbashプロンプト

bashプロンプトを次のように変更しました。

PS1="\[\033[1;31m[\[\033[1;33m\$(date +%H:%M)\[\033[1;31m] \u:\[\033[1;32m\W\[\033[1;37m\$\[\033[0m\] "

主に色のため、キューが長くて申し訳ありません。デフォルトでは、Bashの履歴に戻るために上矢印を押すとプロンプトが消え、すべてが混乱します。似ているこの問題しかし、aが欠けているのか、どこにあるのかはわかりません\[

答え1

少し整理して携帯性をさらに高めてみましょう。通常、生成されたtput制御シーケンスをハードコーディングするよりも使用する方が良いです。バッシュFAQ 53。これにより、行方不明者を見つけるのが簡単になります\]

red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
white=$(tput setaf 7)
reset=$(tput sgr0)
PS1="\[$red\][\[$yellow\]\A\[$red\]] \u:\[$green\]\W\[$white\]\$\[$reset\] "

date電話を同じ内容(24時間形式)を表示する組み込みのプロンプトエスケープ機能に置き換えました。\AHH:MM

接続されたBash FAQに記載されているように、このアプローチには注意が必要です。制御tputシーケンス出力にエスケープを要求する内容が含まれている場合、出力は歪みます。私はこのような問題を経験したことがないので、通常は無視します。

答え2

\[あなたとの不均衡\]。 bashが端末で実際にスペースを占有していないことがわかるように、制御シーケンスを含める必要があります。

この試み:

PS1="\[\033[1;31m\][\[\033[1;33m\]\$(date +%H:%M)\[\033[1;31m\]] \u:\[\033[1;32m\]\W\[\033[1;37m\]\$\[\033[0m\] "

@jw013のソリューションしかし、もっときれいでより良いです。

答え3

これASCIIテーブル色、太字、イタリック体などへの参照があります。

関連情報