スキップしてメイン コンテンツに移動

コマンドラインでメモを残す

概要


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 $*

 
引数のチェック等をおこなっていないが,いずれ追加することとする.