pbcopy/pbpaste

今まで知らなかったのが不覚中の不覚だと思いますがMac OS XではTerminalで

というコマンドが存在するのだそうです。

How to use

$ cat hoge.txt | pbcopy

hoge.txtの内容がクリップボードにコピーされます。他のMac OS Xアプリケーションでその内容をペーストすることが可能になります。ただし注意しないといけないのは日本語を含む場合はデフォルトの状態だとShift JISしか受け付けてくれないということです。UTF-8も使えるようにする方法はd:id:viver:20080203に詳しいです。

pbpasteはいい使用例があまり思い浮かびませんが例えば

$ pbpaste | sed -e 's/foo/bar/g' | pbcopy

などとするとクリップボードの内容にフィルタをかけられます。またクリップボードの内容をファイルに保存したければTextEditを開いてペースとしてファイルとして保存、という手続きを踏むよりは圧倒的に

$ pbpaste > foo.txt

とするのが早いでしょう。

思いついた使用例

例えば引用をしたいけど引用元の「全角英数字」が鬱陶しいなぁ、半角に変えたいなぁなどと思ったとします。引用する文章をコピーした後、Carbon Emacsで作業してるとして、おもむろにM-!としてシェルを呼び出し

$ pbpaste | nkf -Z1 -s | pbcopy

などとすると手軽に全角英数字の除去が行なえます。これでC-yで内容をyankすればよい。

あとMac OS XExcel 2008でしか確認してませんがExcelの表をコピーすると、クリップボードにはTSV(タブ区切りテキスト)の形で表がコピーされます。なので、id:witchmakers:20080602で紹介した拙作tsv2tex(今名前つけた)は次のように使えるわけですね。M-!して、

$ pbpaste | tsv2tex | pbcopy

で、Carbon Emacs使ってる場合はC-yでtexのtabularになった表をyankできるわけです。
今まで中間ファイルを生成してC-x iで挿入してたのと比べると大きな効率の改善です。返す返すもっと早く知ってればよかったと思いました。