LoginSignup
135
123

More than 5 years have passed since last update.

Bashのプロンプトに色を付けてサーバやユーザを区別する

Last updated at Posted at 2015-02-15

Bashの場合PS1変数でプロンプトのフォーマットを指定しているため、そこに色を指定するエスケープシーケンスを混ぜ込むという話です。

実施例

vi ~/.bashrc
追記内容例
PS1="\[\e[36m\e[42m\][\u@\h \W \d \t]\[\e[0m\]\n\\$ "
source ~/.bashrc

表示例

20150215-bash-sumire.png

エスケープシーケンスの構造

記号ばかりでややこしいため図にしてみました。

20160221-bash-escape.png

色以外の \u などについては以下のページが参考になります。
bashのプロンプトを変更するには (atmarkit)

他の色のサンプル

20150215-bash-colors.png

改行について

元々、エスケープシーケンスがあると入力コマンドに折り返しが発生するあたりで表示がおかしくなったので改行を入れて対策していましたが、コメントで教えて頂いた通り、これは先頭の \[ を入れ忘れてたのが原因でした。
違和感あるかも知れませんが、プロンプトに出す情報を増やしても画面が狭くならなくなったのでこれはこれで気に入ってます。

使い所

  • grepなどで1つ前と2つ前のコマンドの出力の境界を見逃さなくなりました。
  • 開発環境とプロダクション環境の区別や特権ユーザかどうかの区別にも良いと思います。

複数人がログインする可能性のあるサーバは、あんまり好き勝手に弄りたくないので、壊れてもいい自分しか使わないような環境のみ色付けてます。
なのでデフォルトのプロンプトを見つけたら身構える感じです。

プロンプトをいじる事に関しては以下のページではもっと面白そうなことやってます。
Color Bash Prompt (日本語)

135
123
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
135
123