🌈
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