ファイルに保存せずに、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!” }