LoginSignup
2
1

More than 3 years have passed since last update.

bashのプロンプト表示を管理する便利ツールを作ったので紹介する

Last updated at Posted at 2019-12-16

この記事は dotfiles Advent Calendar 2019 17日目の記事です。1

今回は、bashのプロンプト表示を簡単に管理する便利ツール(エイリアス群)、
promptrcについて紹介します。

promptrcの紹介

導入方法

promptrcのGithubリンク

コードとしては以下となります。

# 必要な変数定義部分
export BLACK="$(tput setaf 0)"
export RED="$(tput setaf 1)"
export GREEN="$(tput setaf 2)"
export YELLOW="$(tput setaf 3)"
export BLUE="$(tput setaf 4)"
export MAGENTA="$(tput setaf 5)"
export CYAN="$(tput setaf 6)"
export WHITE="$(tput setaf 6)"
export RESET="$(tput sgr0)"

# プロンプト表示設定部分
export PS1='[\A ${GREEN}\u${RESET}${CYAN}@\H${RESET} \W]\n\$ '

sourceコマンドで読み込むと反映されます。

$ source promptrc

.bashrcにsourceコマンドを記載しておくことで、ログインするたび読み込むことが可能です。

# bashrcに追記
source ~/promptrc

dotfiler2 の方は、bashrcに読み込む旨を追記してください。
で、promptrcをadd, commit, pushして、Gitで管理してあげてください。

# bashrcに追記
source ~/dotfiles/promptrc

デフォルトだと、プロンプト表示は以下のようになります(私のお気に入りの表示です)。
image.png

利用方法

色のカスタマイズ

色を変更したい場合は、${COLOR}で指定します。
試しに、デフォルトを以下のように書き換えてみましょう。
書き換えたらsourceで再読み込みしてください。

- export PS1='[\A ${GREEN}\u${RESET}${CYAN}@\H${RESET} \W]\n\$ '
+ export PS1='[\A ${RED}\u${RESET}${YELLOW}@\H${RESET} \W]\n\$ '

なお、とりあえず一時的に変更したい場合は、以下のように環境変数を設定しなおすだけで問題ありません(動作確認など)

$ PS1='[\A ${RED}\u${RESET}${YELLOW}@\H${RESET} \W]\n\$ '

以下のように表示が変更されました。
image.png

表示のカスタマイズ

表示内容についても同様に変更できます。パラメータについてはこちらのブログが詳しいです。
以下引用します。

\a ベル(ビープ音)をならします(ASCII のベル文字 07)
\d "曜日 月 日"の形式の日付
\h ホスト名(最初の . までの名前)
\H ホスト名
\n 改行
\r 復帰
\s シェル名(標準だと -bash が表示)
\t 時刻 HH:MM:SS 形式(24時間) H = Hour = 時、M = Minutes = 分、S = Seconds = 秒
\T 時刻 HH:MM:SS 形式(12時間)
\@ 時刻 am/pm をつけたもの。Lang=Jaの場合 HH:MM (午前
\u 現在のユーザー名
\v bash のバージョン
\V bash のバージョン・リリース番号など詳細
\w 現在のディレクトリ(フルパス)
\W 現在のディレクトリ名
! コマンドのヒストリー番号
# コマンドのコマンド番号(ログイン後何回実行したか)
\$ UID が 0 であれば『 # 』、それ以外は『 $ 』
\ バックスラッシュ
[ 表示されない文字列(エスケープシーケンス/端末制御シーケンス)を埋め込む
] 表示されない文字列の終わり

では出力内容についてカスタマイズしてみましょう。
日付出力 + 時刻について詳細に表示するようカスタマイズを行います。

- export PS1='[\A ${RED}\u${RESET}${YELLOW}@\H${RESET} \W]\n\$ '
+ export PS1='[\d \t ${RED}\u${RESET}${YELLOW}@\H${RESET} \W]\n\$ '

image.png

dateコマンドの結果をそのまま出力することも可能です。
自作コマンド等の出力を利用することももちろん可能です。

- export PS1='[\d \t ${RED}\u${RESET}${YELLOW}@\H${RESET} \W]\n\$ '
+ export PS1='[`date`${RED}\u${RESET}${YELLOW}@\H${RESET} \W]\n\$ '

image.png

何がよいのか

やっていることとしては、色のパラメータを変数にまとめただけです。
\[\033[31m\]等のパラメータを直書きしている記事が多く、最初は私もそれでやってましたが
変更の際いちいちググる必要があり面倒でした。

変数で指定するようなものが見当たらなかったため自作しました。

まとめ

  • プロンプトのカスタマイズは気持ちいい
  • \[\033[31m\]とかで指定すると面倒なので、変数にまとめておこう。
  • 各々が調べて車輪の再発明するのはアレなので、この機会に公開しよう!

おわりに

dotfiles Advent Calendar 2019 に参加させていただき、ありがとうございました。

キーボードやマウス、端末にこだわる方は多くても、プロンプトにこだわる方は少なかったりするのではないでしょうか?

一般に道具に拘ると愛着が増して、使うのが楽しくなってくるものと思います。
プロンプトもカスタマイズすると愛着が沸いてかわいく思えてきます。

ターミナルでの作業が楽しくなるので、未カスタマイズの方はぜひカスタマイズしてみてください。
紹介したツールを導入していただければ、カスタマイズおよび管理のハードルが下がると思います。

次回は18日目、@ahuglajbclajepさんです。

補足

  • EZPROMPTという便利なツールがありました。(Qiitaの紹介記事はこちら)

  • こんなネタプロンプトの作成も可能です。
    image.png

  • PS1=''とか発行するとかなり異様な操作感が味わえます。元の世界に帰りたい場合はexitを発行してください。


  1. 一度言ってみたかったんですよねこれ 

  2. 正式な呼び方を存じておりません。界隈標準の呼称とかあるんでしょうか 

2
1
2

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
2
1