pbcopyで日本語もコピーできるようにする
Mac OS Xの固有コマンドに「pbcopy」というものがあります。
これは
% less hoge.txt | pbcopy
のようにすると、コマンドの実行結果を直接クリップボードに送ることができる優れもののコマンドです。
とても便利なんですが、日本語を含む*1結果をパイプするとコピーしてくれません。
いつも通りグーグル先生に聞いてみたところ、
UTF-8でpbcopyできるようにする - by edvakf in hatena
こちらに対処法が紹介されていました。
# pbcopyで日本語(UTF-8)がコピーできるようになる #__CF_USER_TEXT_ENCODING=0x1F5:1:14 # 元の値 __CF_USER_TEXT_ENCODING=0x1F5:0x8000100:0x8000100 export __CF_USER_TEXT_ENCODING
これを.bashrcや.zshrcにに書いておけば良いみたいです。念のため、先に「echo $__CF_USER_TEXT_ENCODING」で元の値を確認しておくことをオススメします!
17:30追記
こっちの方が良さそう。
# pbcopyで日本語(UTF-8)がコピーできるようになる #__CF_USER_TEXT_ENCODING=0x1F5:1:14 # 元の値 __CF_USER_TEXT_ENCODING=0x1F5:0x8000100:14 export __CF_USER_TEXT_ENCODING
__CF_USER_TEXT_ENCODINGの持つ3つの値は、
1個目:おそらくUID
ama-ch% echo $__CF_USER_TEXT_ENCODING [~] 0x1F5:0x8000100:14 ama-ch% id # idの参照 uid=501(ama-ch) gid=20(staff) groups=20(staff),98(_lpadmin),81(_appserveradm),101(com.apple.sharepoint.group.1),79(_appserverusr),80(admin) ama-ch% printf "%#x\n" $UID # UIDを16進数表記 [~] 0x1f5
このように、UIDと一致します。
2個目:エンコーディング
0x08000100がUTF-8を表すらしい。
参考:Terminal.appで日本語をpbcopyできない件、fakeclipで解決したよ - kei-os2007 no life, no Vim - vimグループ
元々の1がここには載っていないのでよくわかりません。Shift-jisかな?
3個目:システム言語
3つめの値はシステム言語らしく、日本語だと14になるようです。
先程はこの値も0x08000100にしていましたが、これは14のままでもpbcopyは動くようなので14に戻しました。
*1:多分