コンピュータの軽い使い方の一つにメモ帳があります。思い付いたアイディアをコンピュータに書き付けてテキストファイルとして保存しておくと、検索や再利用が簡単にできます。テキストファイルはどんなプログラムからも読み出すことができるので、プログラムが使われなくなってデータが読み出せなくなることもありません。UNIXでは複数のファイルを検索することが簡単にできるので、検索性も十分です。
スクリプト作成の方針を次のようにします。
まず、メモ帳をいれる~/memoディレクトリーと、スクリプトをいれる~/binディレクトリーを作成します。~/binディレクトリーは環境変数PATHに登録します。コンソールからのパスの登録は1回限りなので、.bash_profileなどのドットファイルに登録しておく必要があります。詳しくはUNIXの教科書を読んでください。
$ cd~/binディレクトリーにmemoと言う名前で次のperlスクリプトを作成します。
#!/usr/bin/perl
$file='~/memo/' . `date +%y%m%d_%H%M`;
exec "emacs $file";
パーミッションを実行可能にして
$ chmod 755 memomemoとタイプすると自動的にファイル名を設定してエディターが立ち上がります。
$ memo~/binにメモ帳のブラウザー用のスクリプトも作ります。スクリプトの名前はmembとします。
#!/bin/sh
lynx ~/memo/
パーミッションを実行可能にします。
$ chmod 755 membmembと入力するとブラウザーlynxが立ち上がります。ファイルの選択を変えるときは上下の矢印を用います。右矢印でファイルの内容を表示し、左矢印でリスト表示に戻ります。ブラウザーを終了するときはqを押して、確認のメッセージがでたらyを押します。
$ membディレクトリー内の複数ファイルの検索は
$ grep <キーワード> *でできますが、ファイル名とキーワードが表示されるだけで、目的のファイルを開いたり、また、リストに戻ったりできないので不便です。複数ファイルのgrepの出力は先頭にファイル名が、つぎに、コロンで区切られてキーワードを含む行が表示されます。
filename:キーワードを含む行そこでこれをHTMLのリンクをはるためのタグに変換するフィルターを考えてみます。フィルター名をlinkfilter.plとして、次のようなperlスクリプトを作成します。
#!/usr/bin/perl while (<>) { /^(.*?):(.*)/; print "<A HREF=\"$1\">$1</A><BR>\n$2<BR><BR>\n"; }
テストしてみます。
$ chmod 755 linkfilter.pl
$ echo file:data | linkfilter.pl
<A HREF="file">file</A><BR>
data<BR><BR>
うまくいきました。
Lynxは.htmlの拡張子がついたファイルはHTML文書として扱うので、検索結果の出力を、.search.htmlというファイルにして、~/ディレクトリーに作成します。つぎにLynxを呼び出してsearch.htmlを表示させることにします。次のようなシェルスクリプトを作成し、ファイル名をmemsとします。
#!/bin/sh
grep $1 ~/memo/* | linkfilter.pl > ~/.search.html
lynx ~/.search.html
memsを実行可能にして、mems <検索語句>と入力して検索結果が表示されれば成功です。
$ chmod 755 mems
$ mems keyword
ブラウズの方法はmembのときと一緒です。
memb と mems は、lynx の代わりに w3m を使うこともできます。標準入力からhtml文書を読むことができるので、中間ファイルが要りません。
ファイル名:memb スクリプト: #!/bin/sh w3m ~/memo/ ファイル名:mems スクリプト: #!/bin/sh grep $1 ~/memo/* | linkfilter.pl | w3m -T text/html