ターミナルにログインすると下のように「D-Box-no-iMac:~ D-Box$」というようにプロンプトが表示され、指示を待つ状態になります。
デフォルトだと、ホスト名:現在の作業ディレクトリ:ユーザー名が表示されます。
ローカルでターミナルを使用する際は、毎回ユーザー名を確認する必要はないですね。
今回はより見やすいようにプロンプトの表示を変更する方法を説明します。
Contents
プロンプト設定確認
ターミナルログイン時に表示され、一番多く目にするコマンド待ちの状態のプロンプトは「PS1」と呼ばれています。
この設定を確認するコマンドは「echo」または「set」コマンドで行えます。
デフォルトでは以下のように表示されます。
echo $PS1
\h:\W \u$
「set」コマンドで確認するとこのように設定が確認できます。(一部省略)
set
・・・
PROMPT_COMMAND=update_terminal_cwd
PS1='\h:\W \u$ '
PS2='> '
PS4='+ '
・・・
PS1以外に他の数字が割り当てられたPSがあるのが確認できます。
それぞれのPSの役割はこのようになっています。
PS種類 | 役割 |
---|---|
PS1 | ターミナルログイン時のコマンド待ちの状態のプロンプト |
PS2 | 入力を要求するコマンドや、コマンド入力時に複数行になる場合に表示されるプロンプト |
PS3 | selectコマンドで選択を求める場合のプロンプト デフォルトでは未設定ですが「#?」と表示 |
PS4 | シェルスクリプトで「-x」オプションを付けたスクリプトを実行した時に表示 |
基本的にはPS1以外は変更しなくても良いかと思います。
エスケープシーケンス
プロンプトの設定を確認し、表示された記号「\h:\W \u\$」の説明をします。
このような記号はエスケープシーケンスと呼ばれます。
記号のそれぞれの役割は以下のようになります。
文字列 | 意味 |
---|---|
\a | ASCIIのベル文字(07)(ビープ音を鳴らす) |
\d | 「曜日 月 日」で日付表示 例"水 5 25" |
\e | ASCIIのエスケープ文字(033) |
\h | 最初のピリオド記号"."までのホスト名 |
\H | 完全なホスト名 |
\l | TTY名 |
\n | 改行 |
\r | 復帰 |
\s | シェルの名前 |
\t | 24時間での現在時刻を表示 例"23:02:15" |
\T | 12時間での現在時刻を表示 例"11:02:15" |
\@ | "am/pm"での現在時刻を表示 例"11:02 PM" |
\A | 24時間での現在時刻を秒単位抜きで表示 例"23:02" |
\u | ユーザー名 |
\v | bashのバージョン |
\V | bashのリリース番号、バージョンとパッチレベル |
\w | パスも含めた現在のディレクトリ名 |
\W | パスを含めない現在のディレクトリ名 |
\! | コマンド履歴の番号 |
\# | コマンド番号(ログイン後の回数) |
\$ | UIDが0(スーパーユーザー)なら"#"表示、以外は"$"表示 |
\nnn | 8進数nnnに対応する文字 |
\\ | バックスラッシュ |
\[ | 表示されない文字列(エスケープシーケンス/端末制御シーケンス)の開始 |
\] | 表示されない文字列の終了 |
このようにたくさんの文字列があります。
英語ですがman
コマンドを使ってman bash
で詳細確認ができます。
上記のエスケープシーケンス以外にも好きな文字を表示できるので間に◉などの記号を表示させてわかりやすくすることも可能です。
色の変更
色のエスケープシーケンスで色の変更が行えます。
色を分けることでよりプロンプトの位置やわかりやすさが上がるかと思います。
色のエスケープシーケンスは\[\033[色文字列m\]と\[033[0m\]で囲みます。
色の定義は以下のようになります。
色 | 文字 | 背景 |
---|---|---|
黒(Black) | 30 | 40 |
赤(Red) | 31 | 41 |
緑(Green) | 32 | 42 |
黄(Yellow) | 33 | 43 |
青(Blue) | 34 | 44 |
紫(Purple) | 35 | 45 |
水(Cyan) | 36 | 46 |
白(White) | 37 | 47 |
文字スタイル
上の色コードに文字スタイルコードを加えると文字の装飾が行えます。
文字スタイルコードは以下のようになります。
文字スタイル | コード |
---|---|
太字 | 1 |
細字 | 2 |
下線 | 4 |
点滅 | 5 |
文字色と背景色逆転 | 7 |
文字非表示 | 8 |
全設定クリア | 0 |
まとめ
これらのエスケープシーケンスを使ってプロンプトの変更を行います。
例として、白色の背景に水色(下線)でコマンド履歴番号、緑色の背景に赤色(下線なし)でパスも含めたディレクトリ名、青色の背景に黄色(下線)で$マークを表示するようにするには下のようになります。
export PS1="\[3[1;4;47;36m\]\! \[3[0;1;42;31m\]\w \[3[4;1;44;33m\]$ \[3[0m\]"
するとこのように表示されます。
しかしこのままでは毎回ログインする度に設定が戻ってしまいます。
エイリアスの設定をしておくと次回ログイン時にも変更が反映されます。
設定については下記の記事で説明していますのでよければ御覧ください。
以上がプロンプトの変更方法になります。