開発環境「もしかして」
— linusnoopy i7 4870HQ (@linusnoopy) February 13, 2020
本番環境「わたしたち」
「「入れ替わってる〜〜!?!?」」
とならないために、開発環境、ステージング環境、本番環境のシェルはひと目で判別できるようにしておきたいですね。
bash
と zsh
でプロンプト色を変更してみましょう。
bash編
RHEL系のデフォルトプロンプト
[\u@\h \W]$
白いですね。
bashでは PS1
という環境変数を変更する事でプロンプトの変更が可能です。
文字色を変える
\e[36m
で色付けを開始して
\e[m
でリセットしています。
36
が水色、 33
が黄、 35
が紫に対応しています。
開発環境は水色、ステージングは黄、本番環境は紫、などの設定ができますね。
文字を太字にする
\e[1m
1
だと文字を太字にする事ができます。
太字で色も変える
\e[1;36m
1
と 36
の両方を設定して太字フォントかつ文字色が変更になります。
さらに色々変える
1
太字で
2
薄色で
3
イタリックで
4
下線を引き
9
取り消し線を入れ
36
文字色を水色に
45
背景色を紫に
できたりします。
仕組み
ANSIエスケープシーケンスという特殊文字を使ってターミナルでの表示を制御しています。プロンプトに限らず、プログラムの出力にも使われます。
文字スタイルや、実際の表示色はクライアントのOSやターミナルによって微妙に異なってきます。
参考
ANSIエスケープシーケンス チートシート
https://qiita.com/PruneMazui/items/8a023347772620025ad6
文字スタイル指定の一覧
https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters
色指定の一覧と各ターミナルでの表示色例
https://en.wikipedia.org/wiki/ANSI_escape_code#Colors
zsh編
zsh
では PROMPT
環境変数で設定します。
設定方法もbashとは異なり、zsh独自のタグのようなものを使います。
%B
で太字
%b
で太字解除
%F{cyan}
で文字色を水色にし
%f
で文字色リセット
参考
プロンプト拡張
http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Prompt-Expansion
表示効果
http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects
文字装飾
http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting
マシン全体に設定
/etc/profile.d/
に
bashなら
export PS1="\e[1;36m\][\u@\h \W]\e[m\$ "
zshなら
export PROMPT="%B%F{cyan}[%n@%m]%f%b%~%# "
のようなシェルスクリプトを入れておくと、全てのユーザのデフォルトプロンプトにできます。