Bashシェルでコマンドを実行した後の出力色のリセット

Bashシェルでコマンドを実行した後の出力色のリセット

私は別の色を使って私のコマンドをシェルの残りの出力と簡単に区別したいと思います。しかし、私はカスタムbashシェルの経験があまりないので、入力後に色をリセットする方法がわかりません。

現在のPS1変数は次のとおりです。

export PS1="$red\u$green\$(__git_ps1) $turk\w
$white$ "

# '\$(__git_ps1)' git status prompt (generates a space before it even if empty)

だから私の入力は白です。しかし、コマンドの出力でさえリセットされていないので白です。また、コマンド自体が出力を色分けすると、色自体がリセットされ、白とグレーが見えにくくなります。

それでは、コマンドを入力した後に色をどのようにリセットしますか?

ベストアンサー1

このDEBUGトラップはすべてのコマンドの前に実行されるため、コマンドライン入力に色がある場合は、それを乱用して色をリセットする可能性があります。 (デバッグではないので「乱用」です。)

これで:

$ promptcol="$(tput sgr0)$(tput setaf 3)"
$ cmdcol="$(tput sgr0)$(tput bold)"
$ normalcol="$(tput sgr0)"
$ trap 'echo -n "$normalcol"' DEBUG
$ PS1="\[$promptcol\]\w\$ \[$cmdcol\]"

わかりました:

カラーチップ

\[...\]シェルがプロンプトの幅を正しく計算する方法を知るために、周囲のカラーコードが必要であることに注意してください。返品、\[...\]変数を入れることができません。、シェルは最初にプロンプ​​トエスケープを処理し、次に変数拡張を処理します。

おすすめ記事