23

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

非常に長いので、コンソールで強調表示したり、コピーして貼り付けたりしたくありません。

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

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

stringdata = <<blah blah blah process, lets say it failed and the progress data is stored in this variable so we can skip forward to where the script screwed up in a process when we start up and handle the error instance(s)>>
File.open("temp.txt"){|f| f.write(stringdata)}
`cat temp.txt | pbcopy`

しかし、一時ファイルを作成せずにこれを行うことはできますか?

これは可能だと確信しています。テキスト内のすべてのことが可能です。解決策を事前にありがとう

4

3 に答える 3

33

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

使用echo:

system "echo #{stringdata} | pbcopy"

また

`echo #{stringdata} | pbcopy`

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

IOクラスの使用:

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

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

于 2014-12-03T06:54:10.133 に答える
9

Ruby-API 用のクリップボード gemをシステム クリップボードに使用できます(これはプラットフォームに依存せず、macOS では内部で同じpbcopyユーティリティを使用します)、IRB から使用できます。

require 'clipboard'
Clipboard.copy(stringdata);p

通常、copyメソッドはコピーされた文字列を返します。これがビットの理由です。コンソールが実際の文字列データを表示しないよう;pに返すのはトリックです。nil

于 2016-11-28T14:22:43.740 に答える