Tips記事
» 2001年11月28日 00時00分 UPDATE

bashシェルのプロンプト表示形式を変更させたい

[木田佳克,ITmedia]

 ほとんどのLinuxディストリビューションでは,標準で「bash」シェルが標準設定されている。現在使用中のシェル形式を知りたい場合は「現在使用されているシェルが知りたい」Tipsを参考にしてほしい。ここでは,bashを前提としてプロンプトの表示形式を変更する方法を紹介しよう。

 bashのプロンプト表示は,標準であれば次のようになっているはずだ。

[hogehoge@speed hogehoge]$

 上記の表示は,「speed」というホスト名のサーバに「hogehoge」というアカウントでログインし,カレントディレクトリが「hogehoge」(ホームディレクトリ)であることを意味している。試しに,次のように操作すればプロンプト表示が変化することが分かるだろう。

[hogehoge@speed hogehoge]$ cd /
[hogehoge@speed /]$

 本題に入ろう。bashの場合には,プロンプトを制御するために「PS1」という環境変数が使用されている。このPS1変数は,exportコマンドを使いさまざまな特殊文字コードを利用すれば,表示形式を変更することが可能だ。まず基本として,例えば「$ 」($と半角1バイト)を設定すると次のようになる。半角を付け加えるのは,空きを加えて見やすくするための配慮だ。

[hogehoge@speed hogehoge]$ export PS1="$ "
$

 それでは,実用的だと思われる応用例を何点か紹介していこう。

■曜日,月日を表示

$ export PS1="\d "
Wed Nov 28

 「\d」は「曜日」「月」「日」が組で表示される。

■ホスト名を表示

$ export PS1="\h "
speed

 「\h」は,ホスト名が表示される。

■改行表示

$ export PS1="\n "


 「\n」は,上記の表示例からは分かりづらいが,改行を行う特殊コードだ。ほかのものと組み合わせれば効果的になるだろう。

■シェル名を表示

$ export PS1="\s "
bash

 「\s」は,現在使用中のシェル名が表示される。

■24時制時刻を表示

$ export PS1="\t "
18:16:14

 「\t」は,現在時刻が24時間表示形式で表示される。プロンプトが表示されるたびに最新時刻になる。大文字の「\T」の場合は,12時間制の形式になる。

■12時制時刻を表示

$ export PS1="\@ "
06:25pm

 「\@」は,現在時刻を12時間制で「am/pm」を付加させた状態で表示する。

■ログインユーザー名を表示

$ export PS1="\u "
hogehoge

 「\u」は,ログイン中のユーザー名を表示する。

■bashバージョンを表示

$ export PS1="\v "
2.04

 「\v」は,bashのバージョンが表示される。

■bashビルドまでを表示

$ export PS1="\V "
2.04.0

 「\V」は,bashのビルド(リリース)までを付加させて表示する。

■ディレクトリを表示〜その1〜

$ export PS1="\w "
~ cd /
/ cd
~ cd /home
/home

 「\w」は,ホームディレクトリを基準にカレントディレクトリを表示する。

■ディレクトリを表示〜その2〜

$ export PS1="\w "
hogehoge

 「\W」は,カレントディレクトリを表示する。

■コマンドの履歴番号を表示

$ export PS1="\! "
164

 「\!」は,実行中コマンドの履歴番号を表示する。

■コマンド番号を表示

$ export PS1="\# "
17

 「\#」は,実行中コマンドのコマンド番号を表示する。

■UID状態を表示

$ export PS1="\$ "
$

 「\$」は,UIDが0の場合に「#」,それ以外には「$」で表示される。

■バックスラッシュを表示

$ export PS1="\\ "
\

 「\\」は,バックスラッシュが表示される。ただし,環境変数でJPを指定していると上記のように「\」が表示される。

 以上のものは複数を組み合わせて利用することも可能だ。次のような表示もできる。

■時刻とカレントディレクトリを組み合わせ表示

$ export PS1="[\t,\w ] "
[19:24:20,~ ] cd /home
[19:24:37,/home ]

 ほかにも,「\[」でシーケンス制御をオンにするといったこともできる。シーケンスコードには多数の種類があるため,ここで紹介したもの以外にも凝った表示にさせることが可能だ。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ