真コマンドラインだけでtodoリスト
知人にhttp://lifehacker.com/5155450/todotxt-cli-manages-your-tasks-from-the-command-lineを教えてもらった
コマンドライン信者のための ToDo 管理法らしいがスクリプト組んでいる時点で漢らしくないw
そこでコマンドラインだけでtodoリストを作ろうとおもった。
要件は以下の3つ。
1.Todo の追加
2.Todoの検索
3.Todoの削除
開始。
ToDoの追加
漢は黙ってリダイレクトw
$ echo "`date -d '1 month'`:ケンの誕生日" >> todo $ echo "`date -d '2 month'`:タカシの誕生日" >> todo $ echo "`date -d '35 day'`:ヨーコの誕生日" >> todo
echoを"でくくっていないと 後の検索の時にはまるので注意
Todoの検索
IFSを\nにすれば行指向にできる (awkつかえって?)
$ (IFS=$'\n'; for i in `cat todo`; do [[ $i < `date -d '1 month'` ]] && echo $i ; done ) 2009年 4月 12日 日曜日 15:16:40 JST:ケンの誕生日 $ (IFS=$'\n'; for i in `cat todo`; do [[ $i > `date -d '1 month'` ]] && [[ $i < `date -d '60 day'` ]] && echo $i ;done ) 2009年 4月 16日 木曜日 15:17:12 JST:ヨーコの誕生日
ToDoの削除
だめだ。sed使っちゃった。
$ sed -i 's/^\(.*ケンの誕生日.*\)/#\1/' todo $ cat todo #2009年 4月 12日 日曜日 15:16:40 JST:ケンの誕生日 2009年 5月 12日 火曜日 15:16:56 JST:タカシの誕生日 2009年 4月 16日 木曜日 15:17:12 JST:ヨーコの誕生日
grepでもいけるか。
$ (IFS=$'\n';t=/tmp/$$;for i in `cat todo`; do if [ `echo $i|grep ケン` ]; then echo "#$i"; else echo $i;fi>>$t ; done;mv $t todo) $ cat todo #2009年 4月 12日 日曜日 15:16:40 JST:ケンの誕生日 2009年 5月 12日 火曜日 15:16:56 JST:タカシの誕生日 2009年 4月 16日 木曜日 15:17:12 JST:ヨーコの誕生日