ラベル shell script の投稿を表示しています。 すべての投稿を表示
ラベル shell script の投稿を表示しています。 すべての投稿を表示

2007-10-09

ThunderbirdからWalnderlustに移行する その1

なんだか、thunderbirdの開発が続くか怪しくなってきた。というわけで、thunderbirdからメール環境を移行することを最近考えています。自分のメール環境として必要な要件は以下のとおり
  • オープンソースであること
  • プラットホームを選ばない
とりあえず思いつくのは上記のとおり。なので、Mac OS XについているMail.appや(少なくとも日本では)デファクトスタンダードになっているOEは選択肢にあがらないわけです。あと、プラットホームを選ばないという点ではgmailも候補にあがりそうですが、要件その1にあっていないので却下です。gmailはあくまでもメール環境のバックアップです。 というわけで移行先のメール環境としては以下がリストアップされてきました。
  • sylpheed
  • mew
  • wanderlust
sylpheedは遥か昔に使っていたメーラなので何となく親しみはあります。その他のmewとwanderlustは使おうとして挫折したことはあるけど、使ったことはないです。sylpheedはまだ開発が続いているようですが、Mac OS Xで動かすのがめんどくさそうなので却下。で、mewかwanderlustが残ったわけですが、なんとなくwanderlustに引越してみます。 というわけで、今までthunderbirdに溜め込んできたメールをwanderlustが読める形に変換する必要が出てきました。thunderbirdはmbox形式、wanderlustはmh形式でメールを保存するのでmbox -> mhな変換が必要になります。てきとーにググってみてもwanderlustからthunderbirdへ移行した人は結構いるっぽいけど、逆はなかなかいなかったです。 しかたないので、mewに付属しているincmというプログラムに1回喰わせて、mh形式に直してみます。incmを使う時点でmewに移行しろよ、という気がしなくもないですが、初志貫徹ということでもう少しwanderlustにこだわってみます。 以下は大まかな手順です。
  1. thunderbirdで溜めたメールを適当なディレクトリにコピー Mac OS Xでは~/Library/Thunderbird/Profiles/文字列/Mail/Local Folders にメールが溜め込まれているので、このディレクトリをコピーします。
  2. mboxファイル全てに対して以下のコマンドを実行します incm -b -d mboxファイル -i 変換先のディレクトリ 自分の場合はフォルダが80個くらいあったので適当にスクリプトを書きました。こんな感じ。
    #!/bin/sh mboxDir="$1" mhDir="$2" if [ -d "$mhDir" ]; then mv "$mhDir" "$mhDir"-back fi logFile="$PWD/log.txt" if [ -f "$logFile" ]; then rm -f "$logFile" fi touch "$logFile" mailList="./mailLIst.txt" if [ -f "$mailList" ]; then rm -f "$mailList" fi find ./"$mboxDir" -type f > "$mailList" dirList="./dirList.txt" if [ -f "$dirList" ]; then rm -f "$dirList" fi sed s/.sbd//g "$mailList" > "$dirList" for i in `cat "$mailList"`; do echo "$i" >> "$logFile" exportDir="$mhDir"/"`echo $i | sed s/.sbd//g`" if [ ! -d "$exportDir" ]; then echo "create directory: $exportDir" >> "$logFile" mkdir -p "$exportDir" fi ./incm -b -d "$i" -i "$exportDir" | tail -n 10 >> "$logFile" ls "$exportDir" | wc -l >> "$logFile" echo >> "$logFile" done
一応、logファイルで出力された変換済みのファイルの数と実際にthunderbirdで保存しているメールの数を比較したほうがいいかもしれません。 とりあえず、今日はこれくらいで勘弁しておきます。

2007-07-31

Mac OS XのopenコマンドがLinuxにも欲しい!!

Mac OS Xをコマンドラインから使っている人は知っていると思うが,Mac OS Xにはopenというステキなコマンドが用意されている.

このコマンドの使い方はいたってシンプルで以下のように実行をする.
open 引数

実行結果は引数に与えたファイル属性にあったアプリケーションやプログラムを起動してくれるのである.pdfファイルを引数にするとプレビューが立ち上がるし,テキストファイルを引数にするとテキストエディタが立ち上がるといった具合だ.また,起動するプログラムはあらかじめ該当ファイルの「情報を見る」で登録することができる.ものぐさな自分にとってはまさにうってつけのコマンドだったりする.なので時々,MacからLinuxなどのUnixサーバにログインすると,openと打っている自分がいる.RedHat系のディストリビューションだけかもしれないが,実はopenというコマンドは用意されていて,コンソールなどで使うらしい.

しかたがないのでopen.shというシェルスクリプトを作ってみることにした.

まず,fileコマンドでファイルタイプを調べる.

fileType="`file "$i" | awk -F:\ '{print $2}'`"

で変数fileTypeに応じた処理をこんな感じで振り分ける.

case "$fileType" in
ファイルタイプ)
;;
esac

もしも,未知のファイルタイプに遭遇したら

*)
echo "$fileType"
exit 1
;;

としている.あとは使いながらファイルタイプのリストと処理を追加していけば幸せになれたりする.

ついでに,リモートログインした時にXが使えないときはDISPLAY変数をよしなに設定してくれる処理を入れているので,ディレクトリの中身をnautilusとかでも見れたりできる.