SVX日記
2005-10-06(Thu) ワンキー・ラン・コマンズ
ネタがない。ネタがないので、スッゴくクダらないながらも、オイラがスゴく気に入っているTIPSを公開して、お茶を濁すことにする。基本的に「TERATERM」経由で端末作業を使っている人のためのTIPSであるが、その他の環境でも考え方は参考になるものと思う……その他の環境といっても、工事現場では役に立たないと思うが。
さて、お仕事であちこちのサーバにログインして作業をする場合、自分の環境を設定することが困難である。自分の環境とは、例えばエイリアス。オイラは基本的に、lsは常にls -lrtFであって欲しいし、cpは常にcp -pであって欲しいのだ。そして、プロンプト。オイラがずっと気に入って使っているのは「PS1='\[\033[1;1m\]\n<\u> \d - \t\n$HOSTNAME:$PWD[\!] \$ \[\033[0m\]'」で、若干クドいものの、コマンド間の切れ目がわかりやすく、必要十分な情報が含まれている。
世の常として、こーゆー設定は「.bashrc」に書き込むものとされている。しかしながら、サーバの台数が増えるたびに個々に設定しなくてはならないのは非常に面倒だ。イチゲンサンサーバとわかっていれば、設定をFTPでコピーするなどという面倒なことはしないだろうが、こういうサーバに限って、往々にして再度ログインする機会があり、余計なストレスを抱えることになるのだ。
とはいえ、そうやって毎度コピーするのは面倒ではあるものの、できないコトではない。しかし、新たにちょっと便利なエイリアスを思いついた瞬間に、この努力も一気に破綻するのだ。全てのサーバの「.bashrc」を書き換えなくてはならないからである。機会を見つけて徐々に設定するという気の長い方法で対処するか? 結局、コッチで使えて、アッチでは使えないから……とかやっているうちに、面倒になってそのエイリアスを使わなくなるのがオチである。
そんな時に、非常に便利に使える機能が「TERATERMのキーマクロ」である。早い話、あらかじめ設定した文字列を、自動的にガシガシと打ち込んでくれる機能だ。その定義ファイルに、好みの設定を書き込んでしまえばいいのだ。そして、ログイン後に実行させるのである。設定を持っているのは、あくまで端末側であるから、どのサーバにログインしても有効である。
wPrompt = '$ '
wPrompt2 = '# '
bash = "bash"
sendln bash
wait wPrompt wPrompt2
env = "export LANG=ja"
sendln env
wait wPrompt wPrompt2
alias = "alias ls='ls -lrtF'; alias cp='cp -p'"
sendln alias
wait wPrompt wPrompt2
uuenc = "function uuenc () { gzip -c $1 | uuencode uuuuuuuu.gz | sed 's/$/!/g'; }"
sendln uuenc
wait wPrompt wPrompt2
uudec = "function uudec () { cat $1 | sed 's/!$//g' | uudecode; gunzip -N uuuuuuuu.gz; rm $1; }"
sendln uudec
wait wPrompt wPrompt2
prompt = "PS1='\[\033[1;1m\]\n<\u> \d - \t\n$HOSTNAME:$PWD[\!] \$ \[\033[0m\]'"
sendln prompt
ちなみに、オイラはメニューからキーマクロを起動するのさえも面倒な、ちょっと小粋なハイパーズボラニアンなので、ワンキーでこのマクロを実行できるように設定している。具体的には「C:\Program Files\TTERMPRO\KEYBOARD.CNF」の末尾「[User keys]」の下に以下のような記述を追加する。
; Ctrl + F1 key: Executing a macro file
User1=1083,2,profile.ttl