#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