日報を自動作成するシェルスクリプトを作ってみた

毎日日報を作っているが、日報は基本的に前日のをコピーしてから編集するだけなので、コピーする動作のみをシェルスクリプトで自動化した。
以下ソース

# 日報自動作成.sh
fpath='~/日報/' #日報のファイルパス
today=`date +"%Y_%m_%d"` #今日の日付 例:2011_02_28
yesterday=`date -v-1d +"%Y_%m_%d"` #昨日の日付
#ファイルが存在していればコピーしない
if [ -e $fpath$today".txt" ] ; then
	echo "$fpath$today.txtは存在しています"
	'exit'
else
	`cp $fpath$yesterday.txt $fpath$today.txt`
fi

最後に、`emacs $fpath$today.txt`などを記述すると作成した後にエディタを自動で開くことが可能

ただし、cygwinにはdateコマンドに-vオプションが無いので、Windowsでは使えない。
cygwinならこうなる

# 日報自動作成.sh
fpath='~/日報/' #日報のファイルパス
today=`date +"%Y_%m_%d"` #今日の日付 例:2011_02_28
yesterday=`date -d "1 days ago" +"%Y_%m_%d"` #昨日の日付
#ファイルが存在していればコピーしない
if [ -e $fpath$today".txt" ] ; then
	echo "$fpath$today.txtは存在しています"
else
	cp "$fpath$yesterday.txt" "$fpath$today.txt"
fi

ただしこれでは月曜日に作成できない。その問題を修正する。
以下はMac

#!/bin/sh
fpath='~/日報/' #日報のファイルパス
today=`date +"%Y_%m_%d"` #今日の日付 例:2011_02_28
yesterday=''
tmp=0
until [ -e $fpath$yesterday".txt" ]
do
	tmp=`expr $tmp + 1`
	if [ $tmp -eq 30 ]
		then
		exit 1
	fi
	yesterday=`date -v-${tmp}d +'%Y_%m_%d'` #昨日の日付
done
#ファイルが存在していればコピーしない
if [ -e $fpath$today".txt" ] ; then
	echo "$fpath$today.txtは存在しています"
else
	`cp $fpath$yesterday.txt $fpath$today.txt`
fi

後は.emacs

(defun open-nippou() 
  (defvar nippou "~/")
  (defvar isFile (shell-command (concat nippou "hello.sh")))
  (defvar file_name (concat (format-time-string "%Y_%m_%d") ".txt"))
  (if (equal isFile 0)
	  (find-file (concat nippou "日報/" file_name ))
	(message (concat "シェルスクリプトでエラーが発生しました。Cannot Open File:" file_name)))
)

(open-nippou)

のようなlispを追加すれば良い。
後はシェル側の日時のフォーマットをlispから選択できるようにしたいなー。
もちろんシェル側にはデフォルトのフォーマットを用意してさ。
うん。すぐできますが、今日はもう寝る