Techioz Blog

ファイルに保存せずに、Ruby コンソールからクリップボードにテキスト データを渡すにはどうすればよいでしょうか?

概要

作成したグローバル変数に含まれる配列を Mac のクリップボードに渡そうとしています。

非常に長いので、コンソール上でハイライト表示したり、コピーして貼り付けたりすることはしたくありません。

埋め込み Linux コード、特に Mac ラップトップ コンソールの pbcopy 関数を使用して、テキストをコンピュータのクリップボードに渡して、すぐに貼り付けることができるようにしたいと考えています。

これをファイル保存で行うとしたら、次のようなことをします (Ruby の場合)。

stringdata = “kflxkhdoudopudpdpudpudpyddoyod”
File.open("temp.txt"){|f| f.write(stringdata)}
`cat temp.txt | pbcopy`

しかし、一時ファイルを作成せずにこれを実行できるでしょうか?

きっとそれは可能です。テキストにあるすべてのことが可能です。解決策を事前にありがとう

解決策

文字列に改行文字がない場合は、代わりにそれをエコーするだけで済みます。それ以外の場合は、IO クラスを使用します。

エコーの使用:

system "echo #{stringdata} | pbcopy"

または

`echo #{stringdata} | pbcopy`

Ruby はメモリからテキストをリッピングし、それをシェル コマンドに挿入し、echo プロセスと pbcopy プロセスの間のパイプを開きます。

IO クラスの使用:

Ruby の方法で実行したい場合は、IO クラスを使用して pbcopy でパイプを作成するだけです。これにより、書き込み先のプロセス間で共有ファイルが作成され、pbcopy が読み取ります。

IO.popen(“pbcopy”, “w”) { |pipe| Pipe.puts “Hello world!” }