7. ユーザーIDでマークを変更
マークは太字にしよう
通常のユーザーの場合は、マークとして “>” を使いたい
root の場合は、きちんと区別するため “#” を使いたい
~/.zshrc
local p cdir="%B%F{blue}[%~]%f%b"$’n’
local p info="%n@%m"
local p mark="%B%(!,#,>)%b"
PROMPT=" $p cdir$p info $p mark "
colors は(以降も)省略
%( , , ) は if...then...else...
!は(ここでは)
特権ユーザーの判定
詳しくはやはり
man zshmisc で
7 / 25
9. スクリーン番号を(あれば)表示
screen コマンドなどで仮想ターミナルを使っている場合は、
ウィンドウ番号を(“[ ]” の中に)表示したい
使っていない場合は、何も表示したくない
~/.zshrc
local p cdir="%B%F{blue}[%~]%f%b"$’n’
local p info="%n@%m${WINDOW:+"[$WINDOW]"}"
local p mark="%B%(?,%F{green},%F{red})%(!,#,>)%f%b"
PROMPT=" $p cdir$p info $p mark "
${HOGE:+text} は、変数 HOGE が定義されていて値がある
場合のみ、変数 HOGE の値を text に置換する
詳しくは man zshexpn
$WINDOW は、仮想ターミナルのウィンドウ番号が(あれ
ば)格納される変数
9 / 25
12. リモートホスト名の表示(続き)
~/.zshrc
local p rhst=""
if [[ -n "${REMOTEHOST}${SSH CONNECTION}" ]]; then
local rhost=‘who am i|sed ’s/.*((.*)).*/1/’‘
rhost=${rhost#localhost:}
rhost=${rhost%%.*}
p rhst="%B%F{yellow}($rhost)%f%b"
fi
local p cdir="%B%F{blue}[%~]%f%b"$’n’
local p info="%n@%m${WINDOW:+"[$WINDOW]"}"
local p mark="%B%(?,%F{green},%F{red})%(!,#,>)%f%b"
PROMPT=" $p cdir$p rhst$p info $p mark "
12 / 25
13. リモートホスト名の表示(解説)
rsh の場合は$REMOTEHOST にリモートホスト名が入ってる
ssh の場合は$SSH CONNECTION に接続先&元の IP アドレ
スとポート番号が入っている
連結して-n で中身を調べることで、両方に対応
その点、who am i は接続元をカッコの中に表示してくれる
それを sed で抜き出す(sed の説明は省略!)
X サーバの場合は、ここに “localhost:10.0” のような情報が
入っているので、“localhost:” を(あれば)削除
${HOGE#text} は、変数 HOGE の先頭から文字列 text を最
短マッチで探して削除
逆に${HOGE%%text} は、お尻から最長マッチで削除
ここらへんは man zshexpn
変な数字が表示されちゃう場合は、/etc/hosts をチェック
13 / 25