概要
memo.sh
コマンドラインでメモを残すシェルスクリプトについて紹介する.
使い方
引数に保存したいメモの内容を入力する.
$ memo.sh 'メモの内容'
例えば,以下のように利用する.
$ memo.sh hoge
$ memo.sh fefe
$ memo.sh fuga
$ cat ~/var/log/memo/2011-01-28.txt
!!Daily Memo 2011-01-28
*hoge (20:25 JST)
*fefe (20:25 JST)
*fuga (20:25 JST)
メモは日別に保管される.同日に複数回実行すれば,同じファイルに追加書き込みされる.
保存先は~/var/log/memo/hhhh-mm-dd.txtとしている.当然スクリプトなので,保存場所は変更可能.
時刻はdateコマンドで取得している.このため,タイムゾーンの設定によって出力が変わる.タイムゾーンを設定するには,環境変数TZを使う.以下に例を示す.
$ env TZ=JST-9 date
Fri Jan 28 20:29:06 JST 2011
$ env TZ=GMT date
Fri Jan 28 11:29:16 GMT 2011
$ env TZ=UTC date
Fri Jan 28 11:29:44 UTC 2011
コード
以下にコードを示す.
#!/bin/sh
init() {
comment=$*
day=`date +%F`
fname=~/var/log/memo/$day.txt
time=`date +"%H:%M %Z"`
}
create_file() {
mkdir -p `dirname $fname`
cat > $fname <<EOF
!!Daily Memo ${day}
EOF
}
update_file() {
echo "*$comment ($time)" >> $fname
}
main() {
init $*
[ ! -f $fname ] && create_file
update_file
}
main $*
引数のチェック等をおこなっていないが,いずれ追加することとする.