我正在用 Ruby 实现一个小型 telnet 服务器。我目前面临的问题是我想添加 readline 支持,以便我可以支持制表符完成和命令行历史记录。我查看了Readline库,但似乎它只能通过标准输入工作。有没有办法在 Ruby 中做到这一点(我注意到Python的解决方案)?
问问题
688 次
1 回答
1
您可以通过将管道连接到 readline 来做到这一点。这是一个使用while
ri readline 文档中的循环的示例,该循环仅将command 1
, command2
,发送command 3
到 readline。
require 'readline'
rd, wr = IO.pipe
(1..3).each do |i|
wr.puts "command #{i}"
end
wr.close
Readline.input = rd
while buf = Readline.readline('', true)
p Readline::HISTORY.to_a
print("-> ", buf, "\n")
end
输出:
["command 1"]
-> command 1
["command 1", "command 2"]
-> command 2
["command 1", "command 2", "command 3"]
-> command 3
于 2011-06-23T12:10:20.317 回答