#contents
 ----
 * シェル上のプロンプトの確認や設定 [#rbbc7019]
 
 ** プロンプト? [#q85fc6fc]
 
  シェル上(bash, csh など) ではコマンドを入力するコンソール(キーボード入力のための場所が点滅している地点)の事をプロンプトと呼びます。&br;
  Fedora/Red Hat では、初期状態では以下のような形式です。
 
  [ユーザ名@ホスト名 ~]$
 
  たとえば、ユーザ名が sakura、ホスト名が sion の場合
 
  [sakura@sion ~]$ 
 
  と表示されます。~ は「該当ユーザのホームディレクトリ」という意味です。&br;
  たとえば、カレントディレクトリが /var/tmp の場合には
 
  [sakura@sion tmp]$ 
 
  このようにディレクトリ名が表示されます。
 
 ** どうやって確認するの? [#ze42b206]
 
  プロンプトの設定はシェル変数(環境変数)によって定義されます。&br;
  bash の場合 ''PS1'' という名前のシェル変数です。なぜ ''PS1'' なのかは、マニュアルによると "The primary prompt string"=プライマリ(1番目の)プロンプト文だからです。"The secondary prompt string"という2番目のプロンプト文を示す PS2 もあります。行継続用プロンプト文です。『 \ 』を使って次行に引き渡されたときの指定です。標準は『 > 』です。&br;
  プレステ(PlayStation は関係ありません) &br;
 Csh の場合は prompt です。&br;
  現時点で実際にどんなシェル変数の指定がされているかは、echo コマンドで確認できます。
 
  $ echo $PS1
  [\u@\h \W]\$
 
  \u … ユーザ名&br;
  \h … ホスト名&br;
  \W … カレントディレクトリ&br;
  \$ … $という文字(画面上に $ を表示させるという意味)だけじゃなくて、一般ユーザであれば『 $ 』、root ユーザ(UID が 0) であれば『 # 』を表示させます。
 
 ** 設定方法は? [#k1aaf0fb]
 
 *** 簡単な設定方法 [#j1175723]
 
  プロンプトを設定するには、bash の場合、シェル変数 PS1 を変更して指定できます。
 
  例)
  $ PS1='promtp$ '
  prompt$ 
  この例では、コマンド実行後にプロンプトが『 prompt$ 』に変更となります。
  PS1= の後が ' (シングルクォート)で囲まれているのは特殊文字を解釈しないようにする、という意味があります。たとえば『 $ 』は変数を表しますが、シングルクォート内では単に『 $ 』という文字を表示させることが出来ます。" (ダブルクォート)で『 $ 』を表示させたい場合は 『 \$ 』のように記述しなくてはいけません。
 
 *** 時刻を表示させてみよう [#b724f3d4]
 
  時刻を表示させる場合 \t を使います。&br;
  複数のターミナルを開いている場合、時刻が表示されることによって、状況を把握しやすくすることが出来ると思います。
  $ PS1="[\u@\h \t \W]\$ "
  [sakura@sion 16:55:50 ~]$
  このようにして、時刻を表示させる事が出来ます。表示順番は自由に出来ます。たとえば、一番左に時刻を持ってきたい場合は次のように \t を左に持ってきます。
  $ PS1="[\t \u@\h \W]\$ "
  [16:55:50 sakura@sion ~]$
 
 *** シェル変数をプロンプトに組み込んでみる [#mc849f05]
  それぞれシェル変数をプロンプトで用いることもできます。
 - $USER … ユーザ名
 - $HOSTNAME … ホスト名
 - $TERM … 端末名
 - $PWD … カレントディレクトリ
 
  設定例)
  $ PS1='[$USER($TERM)$HOSTNAME $PWD]$ '
  [sakura(vt100)sion /usr/local]$
 
 *** その他の変数を使って、色々なものを表示させる [#rd317b9c]
 
  [[先の変数:http://pocketstudio.jp/linux/?%A5%D7%A5%ED%A5%F3%A5%D7%A5%C8%A4%CE%B3%CE%C7%A7%A4%E4%C0%DF%C4%EA#mc849f05]]のほかに、バックスラッシュ『 \ 』でエスケープした文字を使うことが出来ます。
 
 ,\a,ベル(ビープ音)をならします(ASCII のベル文字 07)
 ,\d,"曜日 月 日"の形式の日付 
 ,\h,ホスト名(最初の . までの名前)
 ,\H,ホスト名
 ,\n,改行
 ,\r,復帰
 ,\s,シェル名(標準だと -bash が表示)
 ,\t,時刻 HH:MM:SS 形式(24時間) H = Hour = 時、M = Minutes = 分、S = Seconds = 秒
 ,\T,時刻 HH:MM:SS 形式(12時間)
 ,\@,時刻 am/pm をつけたもの。Lang=Jaの場合 HH:MM (午前|午後)となる。
 ,\u,現在のユーザー名
 ,\v,bash のバージョン
 ,\V,bash のバージョン・リリース番号など詳細
 ,\w,現在のディレクトリ(フルパス)
 ,\W,現在のディレクトリ名
 ,\!,コマンドのヒストリー番号
 ,\#,コマンドのコマンド番号(ログイン後何回実行したか)
 ,\$,UID が 0 であれば『 # 』、それ以外は『 $ 』
 ,\\,バックスラッシュ
 ,\[,表示されない文字列(エスケープシーケンス/端末制御シーケンス)を埋め込む
 ,\],表示されない文字列の終わり
 
 *** [#x1686a48]
 
 
 *** 外部コマンドを使ってみる例(load average の表示) [#te61d00d]
 
  サーバの負荷(load average)を調べるのは uptime コマンドです。
 
  $ uptime
   18:07:24 up  7:04,  3 users,  load average: 0.00, 0.00, 0.00
 
  load average: の次にあるのが過去 1 分の平均負荷、5 分の平均負荷、15 分の平均負荷です。
 
  プロンプトにコマンドを埋め込むには【 \$(コマンド) 】を用います。
 
  $ PS1="[\$(uptime) ]\$ "
  [ 18:10:54 up  7:08,  3 users,  load average: 0.00, 0.00, 0.00 ]$
 
  こうしておけば、サーバの負荷が頻繁に変動する場合(システムのチューニングを行っている時など)に役立つことができます。他のコマンドも任意に実行することが出来ます。&br;
  適当に値を返すためのシェルスクリプトを予め準備しておいて、それを動作させる方法も有りですね
 
 
 *** 色を付ける [#r0614173]
 
  プロンプトで色をつけるためには【 \[\033[ 】と【 m\] 】で色指定をすることができます。
  たとえば、プロンプトを【 赤色 】にしたい場合は【 \[\033[''0;31''m\][\u@\h:\W]$ " 】です。
 
  $ PS1="\[\033[0;31m\][\u@\h:\W]$ "
 
 色の対応表
 ,黒色(Black),0;30
 ,青色(Blue),0;34
 ,緑色(Green),0;32
 ,水色(Cyan),0;36
 ,赤色(Red),0;31
 ,紫色(Purple),0;35
 ,明灰色(Light Gray),0;37
 ,暗灰色(Dark Gray),1;30
 ,Light Blue,1;34
 ,Light Green,1;32
 ,Light Cyan,1;36
 ,Light Red,1;31
 ,Light Purple,1;35
 ,黄色(Yellow),1;33
 ,白色(White),1;37
 
  背景色も文字色同様に指定出来ます。&br;
  背景色が青で文字が赤の場合は
 
  $ PS1="\[\033[44;1;31m\][\u@\h:\W]$ "
 
  となります。見づらいですが…。41 が赤です。青は 44 という風になっています。
 
  すべての属性を無効にするのは [0m です。
 
  $ PS1="\[\033[0m\][\u@\h:\W]$ "
 
 
 
 
 
 ** 設定をログインする度にするのは面倒なんだけど…… [#g8ff7490]
 
  ~/.bashrc ファイル( ~ はホームディレクトリの意味:/home/ユーザ名/)の末尾の方に PS1='〜' の記述を追加しておけば OK です。ログインする度にわざわざ指定する必要はありません。&br;
  ~/.bash_profile への記述だと、非対話型のシェルスクリプトによってシェルが呼ばれる度(何かシェル・スクリプトを実行する度)に PS1 情報は失われます。記述は .bash_profile ではなく .bashrc へ記述するのが適切です([[Bash-Prompt-HOWTO:http://www.linux.or.jp/JF/JFdocs/Bash-Prompt-HOWTO.txt]]より)。
 
 ----
 : 参考資料 | [[''Bash Prompt HOWTO (JF)'':http://www.linux.or.jp/JF/JFdocs/Bash-Prompt-HOWTO.txt]]
 -- http://www.linux.or.jp/JF/JFdocs/Bash-Prompt-HOWTO.txt 
  

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS