ちなみに、クリップボードの中から RTF を取り出すのはこんな感じ。
#!/bin/bash osascript -e 'the clipboard as «class RTF »' 2>/dev/null | perl -0777 -ne 'print pack q[H*], substr $_, 11, -3'
実行は
$ bash rtf_in_clipboard.sh
ファイルへの書き出し
bash rtf_in_clipboard.sh >"foo.rtf"
あるいは PyObjC で
#!/usr/bin/python # -*- coding: utf-8 -*- import sys from AppKit import NSPasteboard, NSRTFPboardType pboard = NSPasteboard.generalPasteboard() rtf = pboard.dataForType_(NSRTFPboardType) if not rtf: sys.exit('no rtf data') sys.stdout.write('{0}'.format(rtf))
実行
$ python rtf_in_clipboard.py
書き出し
$ python rtf_in_clipboard.py >"foo.rtf"
それか、HTML を作成して、RTF にコンバートするとか。こんな感じにすれば、HTML をファイルに書き出さずに済みます。
#!/bin/bash html=$(cat <<'EOS' <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>001</title> </head> <body> <p style="color: red; font-family: sans-serif;">テスト</p> </body> </html> EOS ) printf '%s' "$html" | textutil -stdin -stdout -convert rtf -format html
実行
$ bash html2rtf.sh
書き出し
$ bash html2rtf.sh >"foo.rtf"
でも、コピペの方が簡単じゃないでしょうかね。