HRR Co., Ltd.

技術的な記録を残していくことを目的としています。1次情報を大事にしています。

BashのPS1についての忘備録

はじめに…

異なる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/$
こんな感じで表示されます。

参照元

ここを見れば書いてあるのですが…。
でも長いので探しづらいですし、英語ですしね…。

www.gnu.org

ちなみに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\]」を指定することになります。
これであらかた説明がつくはず…。

以上でした。