2014-11-18 5 views
3

Мне было интересно, можно ли запустить скрипт ruby ​​в новом окне терминала и перенаправить его вывод в это вновь открытое окно терминала.Ruby - записать вывод в новое окно терминала

Чтобы открыть новый терминал, я в настоящее время сделать system("gnome-terminal"), однако, после исследования на некоторое время, я до сих пор не знаю, как я мог бы достичь следующего («псевдокод»):

variable = "test" 
newTerminal = system("gnome-terminal") 
puts variable to newTerminal 

Это даже возможно, не пройдя серьезных проблем?

+0

Вы используете Ubuntu? – raph

+0

На самом деле я использую Archlinux. – user997309

+1

Вы пробовали что-то вроде: 'exec gnome-terminal -e 'bash -c' echo # {variable}; exec $ SHELL '" '(вам могут потребоваться обратные ссылки вокруг всего после первого exec до конца строки) – raph

ответ

0

Я не могу легко проверить это для вашей системы, но я бы попробовал использовать IO.popen, чтобы открыть терминал, что должно позволить вам записать в поток ввода-вывода.

1

Чтобы сделать что-то похожее на OSX (если когда-нибудь кто-то работает в той же ситуации, да я знаю, что это не отвечает на него для этой конкретной ситуации), вы можете сделать:

variable = "test" 
`osascript -e 'tell app "Terminal" 
    do script "echo #{variable}" 
end tell'` 

Примечание: Эта ISN» t точно так же, как с использованием puts, поскольку он фактически выполнил бы команду echo несколько раз, если бы вы хотели напечатать несколько вещей, но это скорее основа для решения подобной проблемы.

+0

'exec' не обязательно, если вы уже используете backticks ... – Ajedi32

+0

Оказалось, что, спасибо – raph