プロンプト新世代を agnoster-bash と docker-prompt に感じた

agnoster-bash

会社の同僚に教えていただいて Mac のプロンプトを変えてみた。今までも環境ごとにプロンプトは変えていたけれど、vt100 で xterm な枠の中でせいぜい背景色と文字書を変更するぐらいだった。大げさかかもしれないけど、ブランチの記号がフォントに含まれるのにプロンプト新世代を感じた。打ったコマンドの終了ステータスが 0 以外だと赤いバツが出るのも心憎い。

GitHub - speedenator/agnoster-bash: Agnoster Theme for Bash

いままで)

f:id:kyagi:20180204111353p:plain

これから)

f:id:kyagi:20180204111407p:plain

コマンドの終了ステータスが 0 以外の場合、赤いバツがでる)

f:id:kyagi:20180204183523p:plain

プロンプト中のブランチマークが ? になってしまって表示できない現象は iTerm2 のフォントを Meslo LG ファミリに変更すれば表示できるようになる。

My theme error, shows question mark symbol · Issue #23 · agnoster/agnoster-zsh-theme · GitHub

個人的にフォントは Menlo 派なので Meslo LG フォントが Menlo の流れを汲んでいるのはありがたい(Menlo と Meslo で名前も似ている理由があるのかな、と探してみたけど、見つからなかった)

GitHub - andreberg/Meslo-Font: Customized version of Apple's Menlo font. Great monospaced font for development work. Should also work with the Windows Console (see Wiki for Windows infos).

日付と時間を表示しておきたいのと、視点はいつも左端に固定しておくのが楽なので、ちょっとだけ修正を加えておく。

Added datetime and newline for my preference by kyagi · Pull Request #1 · kyagi/agnoster-bash · GitHub

docker-prompt

最近では Docker コンテナかそうでないかによってプロンプトを変更するということもあるようだ。環境ごとに違った emoji をプロンプトに出すというのもなかなかいいかもしれない。

How to get a fancier bash prompt PS1 inside a docker container #docker #ps1 #emoji · GitHub

歴史的なプロンプト変更方法

環境ごとにプロンプトを変更するのは昔からよく行われてきた。よくある例だと、開発環境か本番環境によって色を変える *1 など。

昔読んだドキュメントにプロンプトに焦点を当てて解説していたものがあったので探してみた。バージョン管理が RCS ぽいところも懐かしい。ただし、内容はまだ現在でも褪せていない。(๑´ㅂ`๑)

http://linuxdocs.org/HOWTOs/Bash-Prompt-HOWTO/index.html

*1:具体的には ip a show dev eth0 | grep -o 'inet [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' | cut -d ' ' -f2 して切り出した IP アドレスを、さらに cut -d'.' -f1-2 でネットワーク部分を抽出して case ごとに PS1 を変える