2007-01-26

コマンドラインでコピペ

Mac OS X には pbcopy, pbpaste というプログラムがついていて、Pasteboard(クリップボード)をコマンドラインから使うことができる。

かなり前に同じようなことをする pbdutil というプログラムを書いたんだけれど、ま、実はpbcopy/pbpasteの存在を知らずに車輪の再発明をしていたわけで……。

でもやっぱり、同じようなことをするものでもそれなりに違いがあるもので、たまに思いついたときなんかにちょっとずつ手を入れたりなんかしている。たとえば、pbcopy/pbpaste は基本的にデータとして text/rtf/ps しか扱えないけれど、自分のは tiff, path, rtf, url, text, pict, tab, pdf, html が扱えたりするとか。path とか tab とかはいまいち使い道が分からないのだけれど。使い方は pbcopy や pbpaste とそんなに変わらなくて、リンク先(全然更新されてないけど、プログラム自体もあまり変わってないからだいたいOK)を見ればすぐわかると思う。Mac OS X の Pasteboard には一度に何種類ものデータが入るので、限られた種類とはいえ選択的に使えるならばそれなりに便利だし。

で、最近またちょっといじって rtfd を扱えるようにしてみた。rtfd ってのは、実は一つのファイルではなくて、.rtfd という拡張子の付いたディレクトリにテキストだとか画像など複数のファイルやディレクトリが入っている。Pasteboard にはそれらのデータがシリアリズされて入っているので、それをもとに戻してやらなければならないので、そのためのプログラムを追加した。

例えば、Safari で下のような範囲をコピーしたとする。


その後「pbdutil -r rtfd | mkfw ~/a.rtfd」を実行すれば(mkfw というのが新たに書いた(というのはおおげさだけど)シリアライズされたデータをもとに戻すプログラム)、必要なファイルが入った~/a.rtfd というディレクトリができる。このディレクトリはファインダではファイルのように見えて普通に TextEdit.app で開けるようになっている。


Mac OS X は GUI で使ってよし、Unix として使ってよしの OS で、特にいろいろと用意されたフレームワークは、GUI はもちろんだけれど、コマンドラインのツールで使ってもいろんなことができそう。こういう小ネタで游ぶのも面白い。

No comments: