🌈
Bashのプロンプトをカスタマイズする【色変・時間表示】
結果

上半分がデフォルト、下半分が変更したものです。え、そんなに変わってない?まあこれ読んで自分好みにアレンジしてくださいな。
やり方
ホームディレクトリにある.bashrcの一部を次のように書き換えました。(コメントアウトするかバックアップを取ったほうが良さそうです)
.bashrc
if [ "$color_prompt" = yes ]; then
- PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
+ PS1='\e[32m\u@\h \e[35m\t \e[34m\w \e[0m\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
どうしてこの見た目になるの?
環境変数PS1を覗く
現在のプロンプト設定は環境変数のPS1に格納されています。
$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
なんじゃこりゃ… 調べてまとめてみた図がこちらです。

前半部分は通常プロンプト部には表示されません。
debian_chrootのあたりはchrootコマンドでルートディレクトリを変更した時に表示されるみたいです。詳しくはこちらを参考にしてください。
PS1詳解
後半のわちゃわちゃした部分を解説します。
まずこの2つを押さえた上で先ほどの後半部を見てみます。
-
\[...\]: この2つに囲われた部分は非表示文字となる -
\033[...m: 文字表示の仕方を...の部分に指定する

見やすく色をつけました。登場する特殊文字の意味は以下になります。
| 特殊文字 | 意味 |
|---|---|
| \u | ユーザー名 |
| \h | ホスト名 |
| \w | カレントディレクトリ(絶対パス) |
| \$ | $マーク(rootの時は#) |
詳しくは以下から
PS1簡略化
次にこの3つを踏まえて簡略化します。
-
\[...\]: これはなくても問題ない -
00,01:0,1に等しい -
\033:\eに等しい。033は8進数。ASCIIではESCを表す

だいぶ見やすくなりました。
\e[...mを理解する
...の部分に数字を指定することで文字のスタイルを制御できます。制御の一覧はこちらに詳しく載っています。この文字装飾はプロンプトに限らず使えます。
\e[1;32mは\e[1m と\e[32m を組み合わせたものです。ただし私の環境では太字の設定は適用されませんでした。
| 装飾方法 | 意味 | 見え方 |
|---|---|---|
\e[1;32m |
太字 & 緑 | ![]() |
\e[1;34m |
太字 & 青 | ![]() |
\e[43m |
背景茶 | ![]() |
\e[36;45m |
シアン & 背景マゼンダ | ![]() |
\e[0m |
装飾をリセット | - |
自分用にカスタマイズ
プロンプトに現在時刻を表示させたかったので特殊文字\tを追加しました。
| 特殊文字 | 意味 |
|---|---|
| \t | 24時間表記の現在時刻 |
コロンを消し、スペースを追加した最終的な私の設定がこちらです。色は適当です。
PS1='\e[32m\u@\h \e[35m\t \e[34m\w \e[0m\$ '
これを記事冒頭のように.bashrcに挿入し、ターミナルを新しく開けば反映されます。
(おまけ)プロンプトで改行したい
画像のようにプロンプト二行に分けて、入力部の幅を広くしたい!って方もいるんじゃないでしょうか。

そんなときは改行を使いましょう。改行は特殊文字\nでできます。
| 特殊文字 | 意味 |
|---|---|
| \n | 改行 |
PS1='\e[32m\u@\h \e[35m\t \e[34m\w\n\e[0m\$ '




Discussion