32nd Diary

過去の日記
today: , yesterday: , total:
2006年
8月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

めーるあどれす:ruby -r base64 -e 'puts Base64.decode64("dGFrQG5vMzIudGs=")'


トップ «前の日記(2006-08-05 (Saturday)) 最新 次の日記(2006-08-07 (Monday))» 編集

2006-08-06 (Sunday) [長年日記]

寝すぎ

間欠的に起床しつつ20:00まで寝てしまった.

夏はいろいろ疲れますね...

Tags: Life

プログラムを起動するときに引数をいじるコマンド

元ネタはCgywinをコマンドランチャー代わりにです.

コマンドの起動時に引数をcygpathで処理し, cygwinからでもWindowsアプリケーションに正常なファイル名を渡す方法です.

コマンドごとにファイルを作る方法だとそのたびに内容のコピーが発生して気持ち悪い.そこで,ひとつのファイルにまとめる方法を考えてみました.

まずは,以下のようなコードを ~/bin/cygexec.sh などとして保存します.

#!/bin/sh
 
PROG_1='firefox /cygdrive/c/Program Files/Mozilla Firefox/firefox.exe'
PROG_2='xyzzy /cygdrive/d/Tools/xyzzy/xyzzy.exe'
 
NUM=1
while :; do
  eval PROG_NUM=PROG_${NUM}
  eval PROG='$'${PROG_NUM}
  if [ -z "${PROG}" ]; then
    break
  else
    PROG_PATH=${PROG#`basename $0` }
    if [ "$PROG_PATH" != "$PROG" ]; then
      break
    fi
  fi
  NUM=$((${NUM}+1))
done
 
if [ ! -z "${PROG}" ]; then
  if [ $# -eq 1 ]; then
    exec "${PROG_PATH}" "$(cygpath -wa "$1")"
  else
    exec "${PROG_PATH}"
  fi
fi

んで, "ln -s ~/bin/cygexec.sh ~/bin/firefox" といったようにリンクを張れば準備完了. firefoxコマンドの第一引数を cygpath で処理してくれるはずです.

他のプログラムを追加したい場合は例中の xyzzy のように PROG_N の追加とシンボリックリンクの追加を行えばよし.

この件では起動時に引数をcygpathで処理していますが, 最後のif文の周辺でいろいろいじれば他の処理にも使えるはず.

そーいや,LinuxサーバHacks―プロが使うテクニック&ツール100選(ロブ フリッケンガー/Rob Flickenger/山口 晴広/イメージズアンドワーズ) LinuxサーバHacks―プロが使うテクニック&ツール100選(ロブ フリッケンガー/Rob Flickenger/山口 晴広/イメージズアンドワーズ) でホスト名と同名のコマンドを作り,いきなりsshする方法を扱っていて,そのときに同じような構造のコマンドを作っていたような気がする.

うーむ.それにしてもいまだにシェルスクリプトはしっくりこない. 書けるっちゃあ書けるんだが,イマイチよくわからない挙動を示す部分があったり,忘れている部分が多く,書き応えがあるんだよな. こっちはそんな無駄な充実感を求めてないよ...

本日のツッコミ(全2件) [ツッコミを入れる]
kitaj (2006-08-07 (Monday) 13:04)

そういえば学生の頃,ログイン時にNIS(懐しい…)からホスト名一覧を拾ってきて<br>alias ホスト名='rsh ホスト名'<br>みたいなのを自動的に設定するというのを.profileだかに書いていましたよ.

32 (2006-08-08 (Tuesday) 01:27)

うは,YPとはまた懐かしいですね.(実は身の回りにまだ使っているところがあったりしますけども(ぉ<br>うーん,そういえば,今は同じようなことができる仕組みって普通の環境では動いてなさそうですね.ホスト名の一覧を取得できるのは便利ですが,ネットワークの地図を共有する仕組みであるということを考えると,今となっては牧歌的なのかも...?

[]
本日のPingbacks(全0件)