1

私の Ruby アプリケーションでは、次の関数を長い間使用してクリップボードに書き込みました。

def pbcopy(text)
  IO.popen("osascript -e 'set the clipboard to do shell script \"cat\"'","w+") {|pipe| pipe << text}
end

私はこのコードをhereから入手しました。これは、UTF8 やその他のものではるかに信頼性が高いように見えたため、バッククォートを介して以前に使用した pbpaste を置き換えました。それは常に完全に機能していましたが、新しい OSX Mountain Lion では機能しなくなりました。osascript -e 'set the clipboard to "hi"' はうまくいくので、うまくいかないのはパイプの何かかもしれません。どんな助けでも大歓迎です!

4

2 に答える 2

0

do shell script "cat"STDINを返さないようです。

on runただし、ハンドラーを使用して引数を取得できます。フォームは{input, parameters}Automatorでのみ機能するようです。

system("osascript", "-e", "on run {input}
set the clipboard to input
end", "あä")

__CF_USER_TEXT_ENCODING変数を設定することもできます。

IO.popen("__CF_USER_TEXT_ENCODING=$UID:0x8000100:0x8000100 pbcopy", "w") { |i|
  i << "あä"
}
于 2012-07-30T11:28:17.467 に答える
0

これを試してみたところ、UTF-8文字でうまくいきました:

def pbcopy(text)
  IO.popen("pbcopy", "w+") {|pipe| pipe << text}
end

pbcopy "smörgåsbord"
puts `pbpaste`
于 2012-07-28T09:57:12.270 に答える