Взаимодействие с оболочкой через Ruby непрерывно? - PullRequest
0 голосов
/ 29 апреля 2011

Я хочу захватить выходные данные команд оболочки, поэтому я использую

response = `#{command}`

, что хорошо, если вы хотите выполнить только одну команду, а не непрерывное взаимодействие. Например, если я сделаю

response = `cd tmp`
# response = '', which is correct
response = `ls`

Я бы хотел, чтобы он возвращал ls в пределах tmp, поскольку в предыдущей команде я изменил каталог на temp. Есть ли способ запустить непрерывную оболочку в своем собственном потоке или геме или что-то в этом роде?

1 Ответ

0 голосов
/ 29 апреля 2011

`запускает вложенную оболочку, поэтому она не влияет на вашу текущую оболочку Ruby. Однако вы можете использовать Ruby's Dir.chdir или FileUtils.cd, чтобы изменить рабочий каталог вашей оболочки Ruby.

Кстати, может быть, вам нравится fresh , который является гибридом между системой и оболочкой Ruby. Обычно вы можете использовать cd / ls, находясь в оболочке Ruby.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...