expectで素朴にプロンプトを待つだけだとコマンドの実行が完了するまで途中の出力が表示できなくていまいちだったのであれこれ試して下記のようにしてみた。 プロンプトのパターンに改行が含まれる場合はもうちょい工夫(途中の出力をバッファリングしておく)が必要。 # coding: utf-8 require 'pty' require 'expect' require 'timeout' puts "-->> spawn" PTY.spawn("bash -i") do |i, o| # 最初の出力を出し切る begin Timeout.timeout(1) do loop { print i.getc } end rescue Timeout::Error end # 実行するコマンドを送信 o.puts "ruby command.rb" finished = false while !