人気ブログランキング | 話題のタグを見る

青空Linux

bashプロンプトのカスタマイズ

 要点


プロンプトに時刻なんか表示されたらいいなーということで、メモ。
キーは2点

  ・bashのプロンプトの形状は、シェル変数 PS1で変更できる。
   (コマンドが2行にまたがる場合には、PS2)
  ・エスケープシーケンス一覧は、bashのmanで確認できる。
   
*bash 3.1.17のman抜粋        ―――――――――――――――――――――――――――――――

プロンプト
   
対 話的に動作している場合、 bash はコマンドを読む込み準備ができた時にプライマリプロンプト PS1 を表示し、コマンドを完成させるためにまだ入力が必 要な時にセカンダリプロンプト PS2 を表示します。 bash ではこれらのプロンプト文字列をカスタマイズできます。この際にはバックスラッシュでエスケ ープされた各種特殊文字を挿入でき、これは以下のようにデコードされます:

\a ASCII のベル文字 (07)
\d "曜日 月 日" という形式の日付 (例: "Tue May 26")
\e ASCII のエスケープ文字 (033)
\h ホスト名のうち最初の ‘.’ までの部分
\H ホスト名
\j シェルによって現在管理されているジョブの数
\l シェルの端末デバイスのベース名 (basename)
\n 改行
\r 復帰
\s シェルの名前。つまり $0 のベース名 (最後のスラッシュ以降
の部分)
\t 24 時間の HH:MM:SS 形式の現在の時刻
\T 12 時間の HH:MM:SS 形式の現在の時刻
\@ 12 時間の HH:MM am/pm 形式の現在の時刻
\u 現在のユーザのユーザ名
\v bash のバージョン (例: 2.00)
\V bash のリリース。バージョンにパッチレベルを加えたもの (例
: 2.00.0)
\w 現在の作業ディレクトリ
\W 現在の作業ディレクトリのベース名
\! このコマンドの履歴番号
\# このコマンドのコマンド番号
\$ 実効 UID が 0 の場合に #、それ以外の場合は $
\nnn 8進数 nnn に対応する文字
\\ バックスラッシュ
\[ 非表示文字のシーケンスの開始。これを使うと、プロンプト中
に端末の制御シーケンスを埋め込むことができます。
\] 非表示文字のシーケンスを終了します。

―――――――――――――――――――――――――――――――
  
自分的には、時刻は目立たない程度に表示させたいと思うので
最終的には、先頭画像のプロンプトに落ち着いた。


 設定方法

  
ユーザ毎に変更したいのなら、~/.bash_profile に
全ユーザに反映させたいのなら、/etc/profile に下記を適宜追加する。

 export PS1="\[\033[37m\][\d / \t]\n[\u@\h \w]$\[\033[0m\] "



参照: Bash Prompt HOWTO/ Giles Orr, / 訳 遠藤 明
by aozora_linux | 2009-01-12 15:11