【Bash】ターミナルのプロンプトを自在にカスタマイズする

Macのターミナルのプロンプトをカスタマイズしたいと思ったことはありませんか?(この記事にたどり着いた人は恐らくそう思っているはずですね)

初期設定だとなんとなく無機質ですよね。そこで、よく見かけるおしゃれなプロンプトを再現すべく、この機会に勉強がてらプロンプトのカスタマイズをしてみました。

どうでしょうか?色も付けて、おしゃれな感じにしました。

ちなみに僕の設定は左から自分のホスト名(名前が入っているので隠してます)、ディレクトリ名、Gitのブランチ名が入り、それぞれ背景色を紫・灰色・水色としています。

今回はこのプロンプトを自分の力で再現できるように1から解説していきます。ターミナルのプロンプトをカスタマイズして、ちょっと出来る(風の)エンジニアになりましょう!

スポンサードリンク

Bashプロンプトを変更するための手順

まずは、プロンプトを変更するための手順を知っておきましょう。

プロンプトの表示を変更する記述は以下の通りです。

PS1='ここにプロンプトの表示設定を記述します'

「’ ‘」の中にプロンプトの表示設定を記述します。この設定を記述したものを、.bash_profile に記述します。

このファイルに記述を行う際はviエディタを使うと良いでしょう。

$ vi ~/.bash_profile

ちなみに、.bash_profile に記述しなくとも、PS1コマンドで一時的にプロンプトの表示設定を変えることも可能です。(一度ターミナルを閉じたら元に戻ります。)

プロンプトカスタマイズの基礎

プロンプトの表示する内容を変えてみましょう。

export PS1='⚡️ [\t] \w \$ '

この記述を.bash_profile に追加するとプロンプトが以下のようになります。viエディタを終了するには、escを押して:wqコマンド(書き込んで保存)を打ち込みます。

(変更されない人は、.bash_profile を再読み込みするために、source ~/.bash_profile というコマンドを打ってみて下さい。)

簡単にプロンプトを変更することができます

「\t」や「\w」などの意味不明な記述が目に止まったかと思われますが、これはプロンプトで特定の表示を行うための特殊記号です。以下にその一覧を表にまとめておきましょう。

記号 意味
\h ホスト名 darekanoMacBook-Pro
\u ユーザ名 darekasan
\w ディレクトリ(フルパス) ~/User/Library/test
\W ディレクトリ test
\t 時間(24h) 22:22:22
\T 時間(12h) 10:22:22
\@ AM/PM AM
\d 日付 Wed April 10
\D 日時 19/01/01 22:22:22
\# コマンド番号 1
\n 改行

※ホスト名は「システム環境設定>共有」で変更できます。

これで、表示内容は自由に変更することが出来るようになりました。.bash_profile のPS1の記述を自分で変更して、色々弄って確かめてみてください。

プロンプトの文字の色と書体

プロンプトの文字は、書体や色を変更することができます。ここではその方法をマスターしましょう。

文字出力の制御・設定を行うためには「エスケープシーケンス」をしてからプロンプトの設定を書き込みます。

エスケープシーケンスをするには、\[ と\] で囲みます。また、\e[ はASCIIのエスケープ文字を使うという意味です。後に紹介する▶︎の記号を使うならば、この記述は必須です。

太さを変える

プロンプトの文字の太さは、[太さの指定] [文字] の順で指定します。

効果
0m 装飾なし
1m 太字
2m 細字
3m イタリック体
4m 下線
PS1='\[\e[3m\] イタリック \[\e[1m\] ここは太字 \[\e[0m\] 装飾なし \$'

文字の色と背景色

文字の色は、太さ同様に設定できますが、数字が30~37のレンジになります。

実際の色
30m
31m
32m
33m
34m
35m
36m
37m

これらはANSIカラーというカラーコードで設定されています。

また、このような色の指定方法をSGR(Select Graphic Rendition)と呼びます。興味のある人は是非調べてみてください。この手法では非常にバリエーション豊富な色指定が出来るのですが、端末によってどこまで色のサポートが入っているのかわからないため、基本的には上で紹介した0~7の色を大まかに覚えておくと良いかと思います。

背景色は、40m~47mで設定できます。

また、より強い(明るい)色を使いたい場合、文字色であれば90m~97m、背景色であれば100m~107mのレンジで指定をしてみて下さい。

書体/文字色/背景色の同時指定

SGR指定では、「;」で繋ぐことで書体・文字色・背景色の同時指定が可能です。

export PS1='\[\e[1;37;45m\] 太字、文字白、背景紫色 \[\e[0m\] \$ '

Gitブランチの表示

GitプロジェクトではGitブランチを表示させると非常に便利です。

まず、https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh

このコードを全て選択し、コピーして下さい。それをホームディレクトリ配下に.git-prompt.sh という名前のファイルを作り、そこにペーストして保存して下さい。

.git-primpt.sh はGitが用意した公式のシェルスクリプトです。これを読み込むため、.bash_profile でこれを読み込む記述を記載します。

source ~/.git-prompt.sh

export PS1='\W \[\e[1;32m $(__git_ps1 "(%s)") \[\e[0m\] \$ '

するとこのようになります。

(master)という表示がプロンプトに出現しました!現在masterブランチにいるのが一目瞭然です。良いですね。

尚、.bash_profile 内の記述として、$( ) はコマンドを呼び出すための記号、__git_ps1 は関数となっており、%sというフォーマット指定子でブランチ名を出力しています。

プロンプトをラベルのようにカスタム

さて、はじめに紹介した僕のプロンプトを再現してみましょう。

これは背景色と▶︎の記号をうまく組み合わせた方法でこのラベルのような表現を実現しています。

ターミナルで「▶︎」の記号を使うにはPowerlineという特別なフォントが必要です。まずはPowerlineのインストールから始めましょう。

https://github.com/powerline/fonts

こちらのPowerline fontsから、手順に従ってインストールしていきます。

# clone
git clone https://github.com/powerline/fonts.git --depth=1
# install
cd fonts
./install.sh
# clean-up a bit
cd ..
rm -rf fonts

上のコマンドを一行ずつ打ち込み、インストールが完了できたらば、ターミナルのフォントを「~~ for Powerline」のフォントに変更しましょう。

ターミナルのフォントの変更方法は「ターミナル>環境設定>プロファイルタブ>テキストタブ>フォント」で変更できます。

変更が終わった後に、.bash_profileに以下の記述をします。

#プロンプトの設定
source ~/.git-prompt.sh
export PS1='\[\e[37;45m\] \h \[\e[35;47m\]\[\e[30;47m\] \W \[\e[37;46m\]\[\e[30m\] $(__git_ps1 "(%s)") \[\e[36;49m\]\[\e[0m\] '

これで、上の画像と同様のラベルのような表示になったかと思います。

色や表示内容の変更は各自で出来るようになっているはずなので、上の表等を活用して、各々好きなようにカスタムしてみて下さい!!

まとめ

コマンドプロンプトをカスタムするのは意外と簡単です。コツを掴んで気分で変更してみたりするのも良いかもしれません。自分の好きなプロンプトにして、捗るターミナル生活を過ごしましょう!!笑

本記事作成にあたり、以下の記事を参考にさせて頂きました。ありがとうございました。

【Bash】ターミナルのプロンプトのカスタマイズ方法まとめ

ANSIエスケープコード

スポンサードリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です