はじめに…
異なるPC、サーバーに設定しようと思うたびに、その書式や設定の仕方を忘れるのがプロンプトの表示設定。
その仕組み、書き方を残しておこうと思います。
PS1="\[\033[1;34m\][\$(date +%Y%H%M)][\u@\h:\w]$\[\033[0m\] "
こういうやつですね。
私は時間が空くと読めなくなります(笑)。
最初にばらしてしまうと、私は↓のように設定しています。
PS1="\[\033[0;34m\]\u\[\033[0;36m\]@\h\[\033[0;37m\]:\w$\[\033[0m\] "
「userName@serverName:~/work/$ 」
こんな感じで表示されます。
ちなみにPS1とは?
「The primary prompt string.」です。まんまですね。
ちなみに、PS1があるということは、PS2もあります。
こちらは「The secondary prompt string.」で、要は\(バックスラッシュ)で改行した場合の2行目移行のプロンプトの表示文字列の指定になります。
デフォルトは「>」です、と聞くとピンと来やすいのではないでしょうか。
記法について
表示する項目
上記リンクのここに書いてありますが…
「6.9 Controlling the Prompt」
いくつか抜粋すると、こんな感じです。
\d | The date, in "Weekday Month Date" format (e.g., "Tue May 26"). |
\h | The hostname, up to the first ‘.’. |
\H | The hostname. |
\n | A newline. |
\t | The time, in 24-hour HH:MM:SS format. |
\T | The time, in 12-hour HH:MM:SS format. |
\u | The username of the current user. |
\w | The current working directory, with $HOME abbreviated with a tilde (uses the $PROMPT_DIRTRIM variable). |
\W | The basename of $PWD, with $HOME abbreviated with a tilde. |
\[ | Begin a sequence of non-printing characters. This could be used to embed a terminal control sequence into the prompt. |
\] | End a sequence of non-printing characters. |
下2つはピンと来ないかもしれませんけど、装飾で必要になります。
これを見ると、[\u@\h:\w]ここらへんの意味がわかります。
「[」「]」「@」「:」のようにそのまま書いてあるものはそのまま表示されます。
一方で、[\$(date +%Y%H%M)]のようにコマンドの実行も可能になります。
装飾
色及び装飾(太字、アンダーライン)はまとめて指定します。
これは上記リンクのマニュアルにはなかったかも?
Color | Regular | Bold | Underline | Background |
■Black | 0;30m | 1;30m | 4;30m | 40m |
■Red | 0;31m | 1;31m | 4;31m | 41m |
■Green | 0;32m | 1;32m | 4;32m | 42m |
■Yellow | 0;33m | 1;33m | 4;33m | 43m |
■Blue | 0;34m | 1;34m | 4;34m | 44m |
■Purple | 0;35m | 1;35m | 4;35m | 45m |
■Cyan | 0;36m | 1;36m | 4;36m | 46m |
■White | 0;37m | 1;37m | 4;37m | 47m |
Text Reset | 0m |
引用元:
Bash/プロンプトのカスタマイズ - ArchWiki
上記カラーコードを、「\[\e[」(または「\[\033[」)と「m\]」で挟む必要があります。
記号ばかりでわかりづらい…。
この前後に付いている「\[」「\]」は、カラーコードが実際には表示されないものになるので付けています。
こうすることで、カーソルの位置をbashに示していることになります。
装飾のキャンセルは「\[\033[0m\]」を指定することになります。
これであらかた説明がつくはず…。
以上でした。