web-dev-qa-db-ja.com

bashのPS1でユーザー名の特定の文字の色を変更する

PS1がbashで表示しているユーザー名の特定の文字の色を変更したい。

たとえば:\urahulの場合、hの文字を青色に、残りを白色にしたいと思います。

\uはユーザー名を指し、[\033[38;5;15m\]のようなタグを追加することで「エンティティ」全体に色を追加することを知っています。

可能であれば、同じ方法を教えてください。

9
Rahul Bharadwaj

\uエスケープを使用しない場合は、次のようにできます。

PS1="\[\e[0;31m\]${USER:0:1}\[\e[m\]${USER:1} "

これにより、プロンプトはユーザー名とスペースのみに設定されます。ユーザー名の最初の文字は赤になります。これは、特定の範囲で$USER変数を2回展開することで機能します。最初の範囲は0〜1です。2回目の範囲は1(2番目の文字)から最後までです。

あなたが要求したようなプロンプトを取得するには、これを使用します:

PS1="${USER:0:2}\[\e[0;34m\]${USER:2:1}\[\e[m\]${USER:3} "
13
Sebastian Stark