我正在尝试将我创建的全局变量中包含的数组传递到mac上的剪贴板中。
它很长,所以我不想突出显示,复制和粘贴在我的控制台上。
我想使用嵌入式unix代码,特别是mac笔记本电脑控制台的pbcopy
函数,它允许我将文本传递到我的电脑剪贴板,准备粘贴。
如果我用文件保存来做这件事,我会这样做(在ruby中):
stringdata = “kflxkhdoudopudpdpudpudpyddoyod”
File.open("temp.txt"){|f| f.write(stringdata)}
`cat temp.txt | pbcopy`
但是,我可以在不创建临时文件的情况下这样做吗?
我相信这是可能的。文本中的一切都是可能的。提前感谢您的解决方案
3条答案
按热度按时间ivqmmu1c1#
如果字符串中没有换行符,则可以回显它;否则,使用
IO
类。使用
echo
:或
然后Ruby将从内存中抓取文本,将其注入shell命令,该命令在
echo
和pbcopy
进程之间打开一个管道。使用
IO
类:如果你想用Ruby的方式来做,我们只需要使用IO类创建一个带有
pbcopy
的管道。这在我们写入的进程之间创建了一个共享文件,pbcopy
将从中读取。IO.popen("pbcopy", "w") { |pipe| pipe.puts "Hello world!" }
pw136qt22#
这里有一个简单的单行方法,你可以粘贴到你的IRB控制台:
一旦定义好了,
或复制最后一个命令的结果,
当然,也可以将方法定义放在初始化器或其他东西中,例如
.irbrc
或.pryrc
(如果使用pry)。这里有一个更漂亮,更智能的版本:r1wp621o3#
您可以使用my clipboard gem作为系统剪贴板的Ruby-API(这也是平台独立的,在macOS上它将使用相同的
pbcopy
实用程序),以便您可以从IRB使用它:通常,
copy
方法返回被复制的字符串。这就是;p
位的原因:返回nil
是一个技巧,这样控制台就不会显示实际的字符串数据。